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

Zaznaczanie części pola z wyrażeniem regularnym

Ta odpowiedź jest przestarzała. MySql ma lepszą obsługę wyrażeń regularnych.

Nie, niestety MySQL nie ma sposobu na zastosowanie wyrażenia regularnego do zawartości kolumny w klauzuli SELECT, tylko klauzulę WHERE.

Ale możesz to zrobić za pomocą zwykłych (nie wyrażeń regularnych) funkcji manipulacji ciągami znaków. Jeśli kolumna zawierająca ciąg parametrów oddzielonych znakami ampersand ma nazwę url , możesz uzyskać numer identyfikacyjny za pomocą tego drobnego wyrażenia łańcuchowego, które odnajdzie Twój numer identyfikacyjny.

  CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)

Tak więc, jeśli chcesz listę id wartości z url kolumny table1 , możesz użyć tego SELECT zapytanie.

SELECT CAST(RIGHT(url, LENGTH(url) - 3 - 
                       LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
  FROM table1
 WHERE url REGEXP '&id=[0-9]+'

Jak widać, używa to funkcji wyszukiwania wyrażeń regularnych, aby zlokalizować odpowiednie wiersze.

Nie ma w tym nic szybkiego. Dopasowanie wyrażenia regularnego nie może wykorzystywać indeksu MySQL. Jeśli masz możliwość załadowania tabeli z wstępnie wyodrębnioną kolumną id, znacznie lepiej będzie przeszukiwać, gdy Twoja tabela stanie się duża.



  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 zmienić nazwę kolumny klucza podstawowego w MySQL?

  2. Nielegalna mieszanka sortowań MySQL, gdy wszystko jest porównywane tak samo

  3. PDO FetchObject do atrybutów obiektu; OOP w PHP

  4. PHP:Iteruj po wielu tablicach i buduj zapytanie SQL INSERT

  5. Pokazywanie odrębnych wartości za pomocą agregatów