Probé esto en Oracle 12.1. Suelo hacer los ejemplos en este blog en español pero esta vez, tengo que empezar en inglés. Ustedes verán la razón en un momento:
SQL> alter session set nls_language = 'ENGLISH'
2 /
Session altered.
SQL>
SQL> create table caracter
SQL>
Para empezar, creé una tabla y añadí unos datos:
SQL> create table caracter
2 (col1 varchar2(1))
3 /
Table created.
SQL> insert into caracter values('a');
1 row created.
SQL> insert into caracter values('b');
1 row created.
SQL> insert into caracter values('c');
1 row created.
SQL> insert into caracter values('A');
1 row created.
SQL> insert into caracter values('B');
1 row created.
SQL> insert into caracter values('C');
1 row created.
SQL> insert into caracter values('1');
1 row created.
SQL> insert into caracter values('2');
1 row created.
SQL> insert into caracter values('3');
1 row created.
SQL>
SQL> select col1 from
SQL>
Luego ordené los datos y mostré los tres primeros valores. En versiones anteriores, era posible hacerlo de la manera siguiente:
SQL> select col1 from
2 (select col1 from caracter
3 order by col1)
4 where rownum < 4
5 /
COL1
----
1
2
3
SQL>
Ahora, en Oracle 12, se puede hacerlo así. Por supuesto, los resultados son iguales:
SQL> select col1 from caracter
2 order by col1
3 fetch first 3 rows only
4 /
COL1
----
1
2
3
SQL>
SQL> alter session set nls_language = 'SPANISH'
SQL>
Pero, si ustedes hacen la prueba en español, los dos juegos de resultados son diferentes.
SQL> alter session set nls_language = 'SPANISH'
2 /
Sesión modificada.
SQL> select col1 from
2 (select col1 from caracter
3 order by col1)
4 where rownum < 4
5 /
COL1
----
A
a
B
SQL> select col1 from caracter
2 order by col1
3 fetch first 3 rows only
4 /
COL1
----
1
2
3
SQL>
Por el momento, no sé si haya cometido un error o si sea un bug. ¿Acaso alguien pueda ayudarme?
No hay comentarios:
Publicar un comentario