繁体   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