簡體   English   中英

如何在MySQL查詢中使用regex

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM