Error de consulta oracle
Publicado por Damián Proaño (2 intervenciones) el 09/05/2007 03:42:48
Creo que el funcionamiento del oracle tiene una falla o error, para demostrarlo realicé las siguientes consultas en el usuario SCOTT/TIGER:
SELECT * FROM EMP WHERE EMPNO>7900 OR 1=0;
SELECT * FROM EMP WHERE (EMPNO>7900 OR 1=0) AND (1=0);
SELECT * FROM EMP WHERE (1=0) AND (EMPNO>7900 OR 1=0);
Los resultado fueron los siguientes:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7902 FORD ANALYST 7566 03-DIC-81 3000 20
7934 MILLER CLERK 7782 23-ENE-82 1300 10
2 rows selected.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7902 FORD ANALYST 7566 03-DIC-81 3000 20
7934 MILLER CLERK 7782 23-ENE-82 1300 10
2 rows selected.
no rows selected
La primera consulta es correcta Verdadero o Falso = V
La segunda me parece incorrecta (Verdadero o Falso) y Falso = Falso, por lo tanto no deberia sacar resultado.
Las tercera es igual a la segunda excepto que cambié el orden de las condiciones de busqueda: Falso y (Verdadero o Falso) = Falso
Yo realmente creo que es un error de oracle ¿o estoy equivocado?
SELECT * FROM EMP WHERE EMPNO>7900 OR 1=0;
SELECT * FROM EMP WHERE (EMPNO>7900 OR 1=0) AND (1=0);
SELECT * FROM EMP WHERE (1=0) AND (EMPNO>7900 OR 1=0);
Los resultado fueron los siguientes:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7902 FORD ANALYST 7566 03-DIC-81 3000 20
7934 MILLER CLERK 7782 23-ENE-82 1300 10
2 rows selected.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7902 FORD ANALYST 7566 03-DIC-81 3000 20
7934 MILLER CLERK 7782 23-ENE-82 1300 10
2 rows selected.
no rows selected
La primera consulta es correcta Verdadero o Falso = V
La segunda me parece incorrecta (Verdadero o Falso) y Falso = Falso, por lo tanto no deberia sacar resultado.
Las tercera es igual a la segunda excepto que cambié el orden de las condiciones de busqueda: Falso y (Verdadero o Falso) = Falso
Yo realmente creo que es un error de oracle ¿o estoy equivocado?
Valora esta pregunta


0