如何缩短类SQL语句

如何缩短类SQL语句,sql,Sql,如何缩短以下sql查询(其中返回以列“mycolumn”中四个不同字符串之一开头的行): J.您有一些选择,尽管从性能角度来看,没有一个是好的。如果所有前缀长度相同,则: where left(column, 3) in ('xyz', 'abc', 'def', 'ghi') 如果您使用的是支持正则表达式的数据库: where column ~ '^(xyz|abc|def|ghi)' 在这种情况下,~是正则表达式匹配的Postgres语法。如果数据库支持正则表达式,则可以使用以下代码:

如何缩短以下sql查询(其中返回以列“mycolumn”中四个不同字符串之一开头的行):


J.

您有一些选择,尽管从性能角度来看,没有一个是好的。如果所有前缀长度相同,则:

where left(column, 3) in ('xyz', 'abc', 'def', 'ghi')
如果您使用的是支持正则表达式的数据库:

where column ~ '^(xyz|abc|def|ghi)'

在这种情况下,
~
是正则表达式匹配的Postgres语法。

如果数据库支持正则表达式,则可以使用以下代码:

select * from mytable where mycolumn ~ '^(xyz|abc|def|gth)'

如果您的数据库支持Regex,学习Regex绝对值得考虑,尽管我认为它对性能的影响不大,因此如果您的查询将依赖大量字符串,建议您使用它。

简短的答案是(不幸的)否。但是,我链接的副本中有一些有见地的问题,请看一看。你用的是什么数据库?为什么要缩短它?我认为这个问题看起来还不错。如果您的DBMS支持正则表达式,则可以在
WHERE
子句中使用单个表达式。只需查找一个不太复杂的语句即可。Reg表达式在DBMS中不起作用,但这种类似idea的方法很有帮助,thanks@J.Doe:当然,“DBMS”产品支持正则表达式。但是,在不同的完整性级别下,您使用的是哪一个?是的,当使用类似的子字符串语句时,我也体验到了较低的性能(在时间上)
select * from mytable where mycolumn ~ '^(xyz|abc|def|gth)'