[英]How to regex in a MySQL query
我有一個簡單的任務,我需要搜索以字符串字符開頭的記錄和后面的單個數字。 我正在嘗試的是這個
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')
和
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')
但是這兩個查詢總是返回null
記錄
trecord
-------
null
好像我執行以下查詢
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')
它返回
trecord
-------
ALA0000
ALA0001
ALA0002
這意味着我有以ALA開頭的記錄和后面的數字,
編輯
我正在使用PHP MySQL和innodb引擎來實現它。
我認為你可以使用REGEXP而不是LIKE
SELECT trecord FROM `tbl` WHERE (trecord REGEXP '^ALA[0-9]')
在我的情況下(Oracle),它是WHERE REGEXP_LIKE(column, 'regex.*')
。 看到這里 :
SQL函數
描述
REGEXP_LIKE
此函數在字符列中搜索模式。 在查詢的WHERE子句中使用此函數可返回與指定的正則表達式匹配的行。
...
REGEXP_REPLACE
此函數在字符列中搜索模式,並使用您指定的模式替換該模式的每個匹配項。
...
REGEXP_INSTR
此函數在字符串中搜索給定的正則表達式模式。 您可以指定要查找的事件以及要搜索的起始位置。 此函數返回一個整數,指示字符串中找到匹配項的位置。
...
REGEXP_SUBSTR
此函數返回與您指定的正則表達式模式匹配的實際子字符串。
(當然,REGEXP_LIKE僅匹配包含搜索字符串的查詢,因此如果您想要完全匹配,則必須使用'^$'
作為開頭( ^
)和結束( $
)匹配,例如: '^regex.*$'
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.