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

Избиране на част от поле с регулярен израз

Този отговор е остарял. MySql има по-добра поддръжка на регулярни изрази.

Не, за съжаление MySQL няма начин да приложи регулярен израз към съдържанието на колона в клауза SELECT, а само клауза WHERE.

Но можете да използвате обикновени (нерегулярни) функции за манипулиране на низове, за да направите това. Ако колоната, съдържаща вашия разделен с амперсанд низ от параметри, е наречена url , можете да получите идентификационния номер с този фин низов израз, който намира вашия идентификационен номер.

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

Така че, ако искате списък с id стойности от url колони на table1 , можете да използвате този SELECT заявка.

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

Както можете да видите, това използва функцията за търсене на regexp за намиране на подходящите редове.

В това няма нищо бързо. Съвпадението на регулярен израз не може да използва MySQL индекс. Ако имате избор да заредите таблицата си с предварително извлечена колона с id, ще бъде много по-добре да търсите, когато таблицата ви стане голяма.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съобщение за грешка:Изключение в основната нишка org.hibernate.HibernateException:Грешка при достъпа до stax поток

  2. Изследване на MySQL Binlog сървър – Ripple

  3. Mysql codeigniter php asc desc ред по брой резултат с помощта на php

  4. Заявка за намиране на външни ключове

  5. Как да стартирате или заредите .po/.mo файлове за локализация в php