您好我正在尝试制定一个查询,这将允许我从单个列中查找3个超标的所有记录。记录的一个例子就像XXXX-RP-XXXAS1-P。
我需要能够通过2或3次超时来对1000个记录进行排序。
答案 0 :(得分:0)
您可以使用空字符串REPLACE
字符串中的连字符,并计算原始字符串和替换字符串长度的差异,以检查连字符的数量。
select *
from yourtable
where len(column_name)-len(replace(column_name,'-',''))=3
and substring(column_name,9,1) not like '%[0-9]%'
答案 1 :(得分:0)
如果您的记录有2个或3个连字符,那么只需执行:
where col like '%-%-%-%'
这将获得3个或更多连字符。正好3:
where col like '%-%-%-%' and col not like '%-%-%-%-%'
答案 2 :(得分:0)
试试这个,
declare @t table(col1 varchar(50))
insert into @t values ('A-B'),('A-B-C-D-E'),('A-B-C-D')
select * from
(SELECT *
,(len(col1) - len(replace(col1, '-', ''))
/ len('-')) col2
FROM @T)t4
where col2=3