SQL Server 以字符串列表开头

Posted

技术标签:

【中文标题】SQL Server 以字符串列表开头【英文标题】:SQL Server starts with list of strings 【发布时间】:2017-03-28 00:09:12 【问题描述】:

我以前使用 mysql 并且有一个使用 REGEXP 的查询。我试图找到以某些字符开头的site_ids,并使用以下内容:

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】:

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

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 中 in 和like 有啥区别?

Oracle SQL 字符串以“987”或“I”开头

如何查询我的所有视图设计以查找 SQL Server 中的特定字符串?

正则表达式:如何匹配不以前缀列表开头的子字符串

获取以条目字符串开头的列表,然后给出mysql数据库中可用的所有结果

sql server使用的相关基础知识