如何缩短以下sql查询(我返回以“ mycolumn”列中的四个不同字符串之一开头的行):
select * from mytable where mycolumn LIKE 'xyz%'
OR mycolumn LIKE 'abc%'
OR mycolumn LIKE 'def%'
OR mycolumn LIKE 'gth%'
J。
答案 0 :(得分:4)
您有一些选择,尽管从性能的角度来看,没有一个是好的选择。如果所有前缀的长度都相同,则:
where left(column, 3) in ('xyz', 'abc', 'def', 'ghi')
如果您使用的数据库支持正则表达式:
where column ~ '^(xyz|abc|def|ghi)'
在这种情况下,~
是用于正则表达式匹配的Postgres语法。
答案 1 :(得分:0)
如果您的数据库支持正则表达式,则可以使用以下代码:
select * from mytable where mycolumn ~ '^(xyz|abc|def|gth)'
学习Regex绝对值得考虑,如果您的数据库支持它,尽管我认为影响性能并不理想,所以如果您的查询要依赖大量字符串,建议使用它。