我正在使用以下代码进行计算
select column1 from tablename where code SIMILAR TO '%(-|_|–)EST[1-2][0-9](-|_)%'
对于此列值-CSEST190-KCY18-04-01-L,已通过条件,但实际上,我想忽略此类数据。 应当通过上述条件的正确值为
-CS-EST19-0-KCY18-04-01-L
-CS_EST19-0-KCY18-04-01-L
任何建议,如何避免这种混淆?
答案 0 :(得分:0)
最简单的方法是使用正则表达式,而不是使用SQL标准SIMILAR TO
。
select column1 from tablename where code ~ '[_–-]EST[12][0-9][_-]'
请注意,这不必与完整字符串匹配,也不必在两端都添加.*
(相当于%
和{{1}中的LIKE
}。之所以匹配,是因为下划线SIMILAR TO
是单个通配符。
此外,我在方括号中切换了顺序,以使破折号成为最后一个字符。这样,它将被视为字符文字,而不是范围说明符。