我有一个包含文本列的表,比如说车号。
现在我想查询表格中包含特定车辆编号的字段。
匹配时我不想考虑非字母数字字符。
example: query condition - DEL123
should match - DEL-123, DEL/123, DEL@123, etc...
答案 0 :(得分:4)
如果您知道要跳过哪些字符,请将它们作为此translate()
调用的第二个参数(比正则表达式函数更快):
select *
from a_table
where translate(code, '-/@', '') = 'DEL123';
否则,您只能使用regexp_replace()
来比较字母数字字符:
select *
from a_table
where regexp_replace(code, '[^[:alnum:]]', '', 'g') = 'DEL123';
答案 1 :(得分:0)
@klin的答案很棒,但不是很容易理解,所以如果您正在搜索数百万条记录(可能不是您的情况,但也许其他人有类似问题寻找答案) ,使用正则表达式可能会产生更好的结果。
以下将使用代码上的索引显着减少测试的行数:
DateTimeValue
-----------------------
2016-06-16 09:00:00.000