我正在尝试提出一个查询,该查询将基于子字符串进行过滤。 如果我将substring用作select语句,则该子字符串操作可以正常工作,但是当我尝试使用它进行过滤时,效果不佳
-- 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却没有结果的情况下
答案 0 :(得分:4)
这是您想要的逻辑吗?
WHERE SUBSTRING(name, 8, LEN(name)) IN ('12', '123')
但是我想我会更倾向于这样写:
where name like '%[_]12'] or
name like '%[_]123'
我只是觉得目的更清楚。
答案 1 :(得分:1)
您的报价有误:
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');