SQL Server以字符串列表开头

时间:2017-03-28 00:09:12

标签: pymssql

我之前使用的是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 ...

的堆积

1 个答案:

答案 0 :(得分:3)

您可以结合使用leftorin来缩短查询。

WHERE left(site_id,2) in ( 'AB', 'BC', 'AO', 'BO', 'CA') or left(site_id, 3) = 'PAF' or left(site_id, 1) = 'Z'