SQL Server 以字符串列表开头
Posted
技术标签:
【中文标题】SQL Server 以字符串列表开头【英文标题】:SQL Server starts with list of strings 【发布时间】:2017-03-28 00:09:12 【问题描述】:我以前使用 mysql 并且有一个使用 REGEXP
的查询。我试图找到以某些字符开头的site_id
s,并使用以下内容:
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】:您可以使用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'
【讨论】:
以上是关于SQL Server 以字符串列表开头的主要内容,如果未能解决你的问题,请参考以下文章
如何查询我的所有视图设计以查找 SQL Server 中的特定字符串?