SQLite
 sql >> база данни >  >> RDS >> SQLite

3 начина за намиране на редове, които съдържат малки букви в SQLite

Ето три опции за връщане на редове, които съдържат малки букви в SQLite.

Примерни данни

Да предположим, че имаме таблица със следните данни:

.nullvalue null
SELECT c1 FROM t1;

Резултат:

c1            
--------------
CAFÉ          
Café          
café          
1café         
eCafé         
James Bond 007
JB 007        
007           
null          
              
É             
É 123         
é             
é 123         
ø             
Ø             

Можем да използваме следните методи, за да върнем редовете, които съдържат малки букви.

Опция 1:Сравнете с UPPER() Низ

Можем да използваме UPPER() функция за сравняване на оригиналната стойност с нейния еквивалент с главни букви:

SELECT c1 FROM t1
WHERE UPPER(c1) <> c1;

Резултат:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007

Чрез използване на не е равно на (<> ) оператор (алтернативно можете да използвате != вместо <> ако предпочитате), ние връщаме само онези редове, които са различни от техните еквиваленти с главни букви. Причината да правим това е, че ако стойността е същата като нейния еквивалент с главни букви, тогава тя вече е била с главни букви (и не искаме да я връщаме).

SQLite извършва търсене с чувствителност към малки и големи букви и затова не е нужно да правим нищо друго, за да получим желания резултат.

Може да сте забелязали, че горният пример не върна малките символи на Unicode é и ø освен ако стойността не включва и малка буква, различна от unicode. SQLite не поддържа напълно уникод символи. Например UPPER() и LOWER() функциите предоставят само съпоставяне на главни букви за 26-те букви, използвани в английския език. Следователно горният пример не преобразува никакви символи в Unicode в техния еквивалент с главни букви.

Разгледайте разширението SQLite ICU, ако трябва да работите с unicode знаци.

Опция 2:Сравнете с действителните знаци

Друга възможност е да използвате REGEXP оператор с модел на регулярен израз, който изрично включва всеки символ с малка буква, който искаме да съпоставим:

SELECT c1 FROM t1
WHERE c1 REGEXP '[abcdefghijklmnopqrstuvwxyz]';

Резултат:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007

Можем да включим unicode символи в нашия списък, ако желаем:

SELECT c1 FROM t1
WHERE c1 REGEXP '[éøabcdefghijklmnopqrstuvwxyz]';

Резултат:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007
é             
é 123         
ø             

Опция 3:Сравнете с набор от знаци

Друг начин да го направите е да посочите диапазона от малки букви, които искаме да съпоставим:

SELECT c1 FROM t1
WHERE c1 REGEXP '[a-z]';

Резултат:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете голямо количество данни в sqlite база данни в Android

  2. 2 начина за връщане само на числовите стойности от колона на базата данни на SQLite

  3. Как да извлечете два Json отговор Json обект и масив

  4. 5 начина за внедряване на търсене, независимо от главните букви, в SQLite с пълна поддръжка на Unicode

  5. GreenDAO поддържа множество връзки между таблици