Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać STRCMP() do porównywania 2 ciągów znaków w MySQL?

Jedną z funkcji napisów w MySQL jest STRCMP() . Ta funkcja umożliwia porównanie dwóch ciągów znaków zgodnie z ich kolejnością sortowania.

Funkcja przyjmuje dwa argumenty. Każdy argument jest ciągiem do porównania. Zwraca albo 1 , -1 lub 0 , w zależności od tego, czy pierwszy ciąg jest większy, mniejszy lub tego samego rozmiaru co drugi ciąg, zgodnie z porządkiem sortowania.

Składnia

Oto składnia:

STRCMP(expr1,expr2)

Gdzie expr1 jest pierwszym ciągiem i expr2 jest drugim ciągiem.

Przykłady

Oto przykład, w którym pierwszy ciąg jest mniejszy niż drugi ciąg zgodnie z porządkiem sortowania:

SELECT STRCMP('A', 'B');

Wynik:

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

Jeśli zamienimy argumenty, otrzymamy to:

SELECT STRCMP('B', 'A');

Wynik:

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

A jeśli użyjemy tego samego ciągu dla obu argumentów, otrzymamy to:

SELECT STRCMP('A', 'A');

Wynik:

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

Oczywiście łańcuchy mogą (i prawdopodobnie będą) składać się z więcej niż jednego znaku:

SELECT STRCMP('A big box', 'Wind and rain') AS Result;

Wynik:

+--------+
| Result |
+--------+
|     -1 |
+--------+

Składanie

STRCMP() funkcja używa sortowania podczas porównywania ciągów. Oznacza to, że możesz uzyskać różne wyniki w zależności od użytego sortowania. Poniższe przykłady pokazują to.

Nie uwzględnia wielkości liter

W tym przykładzie wykonujemy porównanie przy użyciu sortowania bez uwzględniania wielkości liter (_ci część sortowania oznacza, że ​​wielkość liter nie jest rozróżniana):

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

Rozróżnianie wielkości liter

W tym przykładzie wykonujemy porównanie przy użyciu sortowania uwzględniającego wielkość liter (_cs część sortowania oznacza wielkość liter):

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Wynik:

+--------+
| Result |
+--------+
|     -1 |
+--------+

W MySQL sortowanie można ustawić na różnych poziomach (np. poziom połączenia, poziom bazy danych, poziom kolumn itp.). Jeśli nie masz pewności, jakie sortowanie jest używane, zobacz Jak znaleźć sortowanie w 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. Jak mogę przechowywać i pobierać obrazy z bazy danych MySQL za pomocą PHP?

  2. SQLSTATE [HY000] [1045] Odmowa dostępu dla użytkownika 'nazwa_użytkownika'@'localhost' przy użyciu CakePHP

  3. Jak podłączyć aplikację na Androida do bazy danych MySQL?

  4. Jak zaimportować CSV do MySQL Workbench

  5. Używanie MySql z Entity Framework 4 i Code-First Development CTP