这是我当前的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
答案 0 :(得分:1)
您可以使用like
。你知道_
通配符吗?
select t.*
from t
where @YourCode like replace(t.code, 'X', '_');
当然,您也可以使用正则表达式。正则表达式为:concat('^', replace(t.code, 'X', '.'), '$')
。