zzl*_*ani 44 regex mysql sql innodb
我有一个简单的任务,我需要搜索以字符串字符开头的记录和后面的单个数字.我正在尝试的是这个
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')
Run Code Online (Sandbox Code Playgroud)
和
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')
Run Code Online (Sandbox Code Playgroud)
但是这两个查询总是返回一条null
记录
trecord
-------
null
Run Code Online (Sandbox Code Playgroud)
好像我执行以下查询
SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')
Run Code Online (Sandbox Code Playgroud)
它返回
trecord
-------
ALA0000
ALA0001
ALA0002
Run Code Online (Sandbox Code Playgroud)
这意味着我有以ALA开头的记录和后面的数字,
编辑
我正在使用PHP MySQL和innodb引擎来实现它.
Wie*_*314 69
我认为你可以使用REGEXP而不是LIKE
SELECT trecord FROM `tbl` WHERE (trecord REGEXP '^ALA[0-9]')
Run Code Online (Sandbox Code Playgroud)
就我而言(Oracle),它是WHERE REGEXP_LIKE(column, 'regex.*')
. 看这里:
SQL函数
描述
正则表达式_LIKE
该函数在字符列中搜索模式。在查询的 WHERE 子句中使用此函数可返回与您指定的正则表达式匹配的行。
...
正则表达式_替换
此函数在字符列中搜索模式,并用您指定的模式替换每次出现的该模式。
...
REGEXP_INSTR
该函数在字符串中搜索给定的正则表达式模式。您指定要查找的出现位置以及搜索的起始位置。此函数返回一个整数,指示在字符串中找到匹配项的位置。
...
REGEXP_SUBSTR
此函数返回与您指定的正则表达式模式匹配的实际子字符串。
(当然,REGEXP_LIKE 仅匹配包含搜索字符串的查询,因此如果您想要完整匹配,则必须使用'^$'
开头 ( ^
) 和结尾 ( $
) 匹配,例如: 。'^regex.*$'
)