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

Jak NOT RLIKE działa w MySQL?

W MySQL, NOT RLIKE jest negacją RLIKE operatora.

Innymi słowy, za każdym razem RLIKE operator zwróci 1 , NOT RLIKE zwróci 0 .

Składnia

Składnia wygląda tak:

expr NOT RLIKE pat

Gdzie expr jest ciągiem wejściowym i pat jest wyrażeniem regularnym, względem którego testujesz ciąg.

Jest to równoznaczne z wykonaniem następujących czynności:

NOT (expr RLIKE pat)

Przykład 1 – Podstawowe użycie

Oto przykład użycia tego w SELECT oświadczenie:

SELECT 'Coffee' NOT RLIKE '^C.*e$' AS 'Result';

Wynik:

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

Tutaj wzorzec jest dopasowany, jeśli ciąg wejściowy zaczyna się od C i kończy się na e . Działa, ale ponieważ używamy NOT RLIKE , otrzymujemy wynik ujemny (0 ).

Powyższe stwierdzenie jest odpowiednikiem zrobienia tego:

SELECT NOT ('Coffee' RLIKE '^C.*e$') AS 'Result';

Wynik:

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

Przykład 2 – w porównaniu z RLIKE

Tutaj porównujemy wyniki z RLIKE z NOT RLIKE :

SELECT 
  'Coffee' RLIKE '^C.*e$' AS 'RLIKE',
  'Coffee' NOT RLIKE '^C.*e$' AS 'NOT RLIKE';

Wynik:

+-------+-----------+
| RLIKE | NOT RLIKE |
+-------+-----------+
|     1 |         0 |
+-------+-----------+

Przykład 3 – Pozytywny wynik

Poprzednie przykłady dały wynik 0 dla NOT RLIKE , ponieważ ciąg zrobił faktycznie pasują do wzoru. Oto przykład, w którym otrzymujemy 1 , co oznacza, że ​​ciąg nie dopasowanie:

SELECT 
  'Funny' RLIKE '^C.*e$' AS 'RLIKE',
  'Funny' NOT RLIKE '^C.*e$' AS 'NOT RLIKE';

Wynik:

+-------+-----------+
| RLIKE | NOT RLIKE |
+-------+-----------+
|     0 |         1 |
+-------+-----------+

Alternatywne

MySQL zawiera wiele funkcji i operatorów, które zasadniczo robią to samo, a dotyczy to również NOT RLIKE .

Po pierwsze, RLIKE jest synonimem REGEXP_LIKE() funkcja (tak jak REGEXP ).

Po drugie, NOT RLIKE jest odpowiednikiem NOT REGEXP .

Po trzecie, RLIKE , REGEXP i REGEXP_LIKE() można zanegować, po prostu używając NOT operator logiczny.

Dlatego wszystkie poniższe są równoważne:

expr NOT RLIKE pat
expr NOT REGEXP pat
NOT (expr RLIKE pat)
NOT (expr REGEXP pat)
NOT REGEXP_LIKE(expr, pat)

A oto przykład do zademonstrowania:

SELECT 
  'Car' NOT RLIKE '^C' AS 'Result 1',
  'Car' NOT REGEXP '^C' AS 'Result 2',
  NOT ('Car' RLIKE '^C') AS 'Result 3',
  NOT ('Car' REGEXP '^C') AS 'Result 4',
  NOT REGEXP_LIKE('Car', '^C') AS 'Result 5';

Wynik:

+----------+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 | Result 5 |
+----------+----------+----------+----------+----------+
|        0 |        0 |        0 |        0 |        0 |
+----------+----------+----------+----------+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę rozwiązać ten problem za pomocą czystego mysql? (łączenie na „” rozdzielonych wartościach w kolumnie)

  2. Wskazówki dotyczące aktualizacji klastra Percona XtraDB do wersji 8.0

  3. jak uzyskać identyfikator ostatniego wstawienia po zapytaniu o wstawienie w aktywnym rekordzie codeigniter

  4. Importuj plik CSV bezpośrednio do MySQL

  5. Zaawansowane zapytanie MySql:Aktualizuj tabelę informacjami z innej tabeli