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

Как да използвате STRCMP() за сравняване на 2 низа в MySQL

Една от низовите функции в MySQL е STRCMP() . Тази функция ви позволява да сравнявате два низа според реда им на сортиране.

Функцията приема два аргумента. Всеки аргумент е низът за сравнение. Връща или 1 , -1 или 0 , в зависимост от това дали първият низ е по-голям, по-малък или със същия размер като втория низ, според реда на сортиране.

Синтаксис

Ето синтаксиса:

STRCMP(expr1,expr2)

Където expr1 е първият низ и expr2 е вторият низ.

Примери

Ето пример, при който първият низ е по-малък от втория според реда на сортиране:

ИЗБЕРЕТЕ STRCMP('A', 'B');

Резултат:

+-----------------+| STRCMP('A', 'B') |+-----------------+| -1 |+------------------+

Ако разменим аргументите, получаваме това:

ИЗБЕРЕТЕ STRCMP('B', 'A');

Резултат:

+-----------------+| STRCMP('B', 'A') |+------------------+| 1 |+------------------+

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

ИЗБЕРЕТЕ STRCMP('A', 'A');

Резултат:

+-----------------+| STRCMP('A', 'A') |+------------------+| 0 |+------------------+

Разбира се, низовете могат (и вероятно ще) се състоят от повече от един знак:

ИЗБЕРЕТЕ STRCMP('Голяма кутия', 'Вятър и дъжд') КАТО резултат;

Резултат:

+--------+| Резултат |+--------+| -1 |+--------+

Сравняване

STRCMP() функцията използва съпоставянето, когато сравнява низовете. Това означава, че можете да получите различни резултати в зависимост от използваното съпоставяне. Следните примери демонстрират това.

Регистърът не е чувствителен

В този пример ние извършваме сравнението, използвайки съпоставяне без значение на малки и големи букви (_ci част от съпоставянето означава независимо от главните букви):

SET @lowercase =_utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci;SET @uppercase =_utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci;ИЗБЕРЕТЕ STRCMP(@lowercase, @uppercase; 

Резултат:

+--------+| Резултат |+--------+| 0 |+-------+

Регистърът е чувствителен

В този пример ние извършваме сравнението, използвайки съпоставяне, чувствително към главни букви (_cs част от съпоставянето означава, че малките букви са чувствителни):

SET @lowercase =_utf8mb4 'a' COLLATE utf8mb4_0900_as_cs;SET @uppercase =_utf8mb4 'A' COLLATE utf8mb4_0900_as_cs;SELECT STRCMP(@lowercase, @uppercase) AS Result; 

Резултат:

+--------+| Резултат |+--------+| -1 |+--------+

В MySQL съпоставянето може да бъде зададено на различни нива (например ниво на връзка, ниво на база данни, ниво на колона и т.н.). Ако не сте сигурни какво съпоставяне се използва, вижте Как да намерите съпоставянето в MySQL.


  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 Изберете горните N реда

  2. Проблеми при сравнение на MySQL с плаваща запетая

  3. Как да ИЗБЕРЕТЕ най-новите четири артикула на категория?

  4. Възможно ли е в MySQL да има индекс, базиран на функции?

  5. Как да използвам SUBSTRING() в MySQL