我之前使用的是MySQL,并且查询使用了REGEXP
。我试图从某些字符开始查找site_id
,并使用以下内容:
WHERE site_id REGEXP '^(AB|BC|AO|BO|CA|PAF|Z)'
基本上试图找到site_id LIKE 'AB%' OR 'BC%'...
的行,但由于我有很多字符串要匹配,我想以较简洁的方式进行。
不幸的是,SQL Server似乎不喜欢这种语法,我收到错误:
在预期条件的上下文中指定的非布尔类型的表达式,在'REGEXP'附近.DB-Lib错误消息4145,严重级15:常规SQL Server错误:检查来自SQL Server的消息
有没有一种巧妙的方法可以不使用LIKE 'XX%' OR ...
答案 0 :(得分:3)
您可以结合使用left
,or
和in
来缩短查询。
WHERE left(site_id,2) in ( 'AB', 'BC', 'AO', 'BO', 'CA') or left(site_id, 3) = 'PAF' or left(site_id, 1) = 'Z'