高级mysql模式匹配(超越..%)



这是我当前的mysql my_table ...

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

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

我需要编写一个查询,该查询将根据代码返回名称而没有通配符值x。给定的代码值将是准确的,但应比较到位的字符串,X可以匹配任何字符。

例如:

从my_table中选择名称,其中code ='012312345611111111111111111111111111111111111111111111111111111114

 name
 111

从my_table中选择名称,其中code ='000013456222222222225123456';

 name
 222

从my_table中选择名称,其中code ='000123454ABC11234567FABC';

 name
 333

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

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

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

最新更新