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 оператор за извършване на съвпадение на модел на регулярен израз.

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

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

Резултат:

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

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

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

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

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

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

Резултат:

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

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

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

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

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

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

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

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

Резултат:

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

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

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

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

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

SELECT c1 FROM t1
WHERE BINARY c1 REGEXP BINARY '[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. Повишаване на производителността чрез използване на разделяне на четене и запис на трафик от базата данни с Moodle 3.9

  2. Как работи COS() в MariaDB

  3. Внедряване на MariaDB репликация за висока достъпност

  4. Как да инсталирате и защитите MariaDB 10 в CentOS 6

  5. Съвети за наблюдение на MariaDB клъстер