SQL字符串 - 按Hypen过滤(x号)

时间:2017-02-26 22:40:53

标签: sql sql-server sql-server-2008

您好我正在尝试制定一个查询,这将允许我从单个列中查找3个超标的所有记录。记录的一个例子就像XXXX-RP-XXXAS1-P。

我需要能够通过2或3次超时来对1000个记录进行排序。

3 个答案:

答案 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