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

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

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

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

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

SELECT c1 FROM t1;

Резултат:

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

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

Опция 1:Сравнете с POSIX клас символи

Можем да използваме REGEXP оператор за извършване на съвпадение на модел на регулярен израз.

Една проста опция е да сравните нашата колона с [:lower:] POSIX клас символи:

SELECT c1 FROM t1
WHERE c1 REGEXP '[[:lower:]]';

Резултат:

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

RLIKE е синоним на REGEXP , така че можем да заменим REGEXP с RLIKE за да получите същия резултат:

SELECT c1 FROM t1
WHERE c1 RLIKE '[[:lower:]]';

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

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

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

Резултат:

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

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

По подразбиране MariaDB извършва търсене без значение на малки и големи букви и затова използвам BINARY оператор, за да получите търсене, чувствително към главни букви.

Това може да стане и по следния начин:

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

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

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

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

Резултат:

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

Този път се връщат по-малко редове, отколкото в предишните примери. Това е, защото не съм посочил знаци като é и ø , които бяха върнати в тези примери. Нашият резултат съдържа é но този ред беше върнат само защото съдържа и други малки букви, които правят съвпадение.

Следователно, ако използвате тази опция, ще трябва да се уверите, че имате всички валидни знаци.

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

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

SELECT c1 FROM t1
WHERE BINARY c1 REGEXP BINARY '[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. Ръководство за MySQL индекси

  2. MySQL и MariaDB кеширане на заявки с ProxySQL и ClusterControl

  3. Как да защитите своята MySQL и MariaDB база данни срещу кибератаки, когато сте в публична мрежа

  4. Как да сравните производителността на MySQL и MariaDB с помощта на SysBench

  5. Въведение в пълнотекстово търсене в MariaDB