sql sqlite sql-order-by case-insensitive

¿Cómo cambiar la intercalación de la base de datos sqlite3 para ordenar el caso de manera insensible?



sql-order-by case-insensitive (4)

La documentación de los tipos de datos de SQLite describe las secuencias de intercalación definidas por el usuario. Específicamente utiliza COLLATE NOCASE para lograr su objetivo.

Dan un ejemplo:

CREATE TABLE t1( a, -- default collation type BINARY b COLLATE BINARY, -- default collation type BINARY c COLLATE REVERSE, -- default collation type REVERSE d COLLATE NOCASE -- default collation type NOCASE );

y tenga en cuenta que:

- La agrupación se realiza utilizando la secuencia de intercalación NOCASE (es decir, los valores - ''abc'' y ''ABC'' se colocan en el mismo grupo). CUENTA SELECCIONADA (*) GRUPO POR d DE t1;

Tengo una consulta para la base de datos sqlite3 que proporciona los datos ordenados. Los datos se ordenan en base a una columna que es una columna varchar "Nombre". Ahora cuando hago la consulta

select * from tableNames Order by Name;

Proporciona los datos como este.

Pen Stapler pencil

Significa que está considerando las cosas sensibles al caso. La forma que quiero es la siguiente.

Pen pencil Stapler

Entonces, ¿qué cambios debo hacer en la base de datos sqlite3 para obtener los resultados necesarios?

Relacionado ¿Cómo configurar Sqlite3 para que no distinga entre mayúsculas y minúsculas cuando se compara una cadena?


Para clasificarlo no distingue mayúsculas y minúsculas, puede usar ORDER BY Name COLLATE NOCASE


Utilice esta declaración en su base de datos SQLite:

PRAGMA case_sensitive_like = false


select * from tableNames Order by lower(Name);

Michael van der Westhuizen explica en su comentario a continuación por qué esta no es una buena manera. Dejo esta respuesta para preservar su comentario y para servir de advertencia a otras personas que puedan tener la misma idea "brillante" que tuve ;-)