高级MySQL模式匹配(超出LIKE ...%)

时间:2017-04-27 01:27:30

标签: mysql sql regex sql-like

这是我当前的MySQL my_table的例子......

 id          name       code
 1           111        XXXX123456XXXXXXXXXXXXXX
 2           222        XXXX133456XXXXXXX5XXXXXX
 3           333        XXXX123454XXX11XXXXXXABC

代码是一个24个字符的十六进制值,其中X是通配符。

我需要编写一个查询,它将根据CODE返回NAME而不使用通配符值X. 给定的CODE值是准确的,但它应该比较字符串,X可以匹配任何字符。

例如:

SELECT name FROM my_table where code =' 012312345611111111111111';

 name
 111

SELECT name FROM my_table where code =' 000013345622222225123456';

 name
 222

SELECT name FROM my_table where code =' 000123454ABC11234567FABC';

 name
 333

1 个答案:

答案 0 :(得分:1)

您可以使用like。你知道_通配符吗?

select t.*
from t
where @YourCode like replace(t.code, 'X', '_');

当然,您也可以使用正则表达式。正则表达式为:concat('^', replace(t.code, 'X', '.'), '$')