繁体   English   中英

SQL Server-在where子句中使用子字符串

[英]SQL Server - Use substring in where clause

我正在尝试提出一个查询,其中将基于子字符串进行过滤。 如果将子字符串操作用作选择语句,则该子字符串操作工作正常,但是当我尝试将其用于过滤时却无法正常工作

-- These are some examples of the data I have
--cust_12
--cust_123
--temp_db
SELECT SUBSTRING(name,8,LEN(name)) AS ClientId, name FROM sys.databases
WHERE SUBSTRING(name,8,LEN(name)) IN ('12, 123');

如果我不带where节运行查询,则数据将正确解析,但是使用where却没有结果

这是您想要的逻辑吗?

WHERE SUBSTRING(name, 8, LEN(name)) IN ('12', '123')

但是我想我会更倾向于这样写:

where name like '%[_]12'] or
      name like '%[_]123' 

我只是认为目的更明确。

您的报价有误:

SELECT SUBSTRING(name,8,LEN(name)) AS ClientId, name FROM sys.databases
WHERE SUBSTRING(name,8,LEN(name)) IN ('12, 123');

应该:

SELECT SUBSTRING(name,8,LEN(name)) AS ClientId, name FROM sys.databases
WHERE SUBSTRING(name,8,LEN(name)) IN ('12', '123');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM