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:Сравнете с LOWER() Низ

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

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

Резултат:

c1            
--------------
CAFÉ          
Café          
eCafé         
James Bond 007
JB 007        

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

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

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

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

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

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

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

Резултат:

c1            
--------------
CAFÉ          
Café          
eCafé         
James Bond 007
JB 007        

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

SELECT c1 FROM t1
WHERE c1 REGEXP '[ÉØABCDEFGHIJKLMNOPQRSTUVWXYZ]';

Резултат:

c1            
--------------
CAFÉ          
Café          
eCafé         
James Bond 007
JB 007        
É             
É 123         
Ø             

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

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

SELECT c1 FROM t1
WHERE c1 REGEXP '[A-Z]';

Резултат:

c1            
--------------
CAFÉ          
Café          
eCafé         
James Bond 007
JB 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. Създаване на първо офлайн приложение с Node.js и SQLite

  2. Android - По-добър подход при зареждане на изображения от SD КАРТА

  3. Как да използвате _COUNT в BaseColumns

  4. SQLite JSON_TYPE()

  5. Изключение на SQLite, докато се опитвате да изтриете ред