使用匹配子字符串筛选出行

时间:2011-07-01 00:33:21

标签: sql tsql

我有一个返回类似于此行的查询:

R123
R234
R345
J123

是否可以不返回具有匹配子字符串的行?因此,在这种情况下,R123和J123将不会显示在结果中。

3 个答案:

答案 0 :(得分:0)

我没有对此进行测试,但它应该给你一个想法..

内部加入收据,即左边的表格子集(col,1)='r' 使用日记帐(表格的左侧(col,1)='j),您将获得匹配行的列表。

然后只需从表中选择不在此列表中的行

SELECT * FROM [Table] 
WHERE SUBSTRING(col,2,100) NOT IN 
    (SELECT Receipts.Ref FROM 
           (SELECT SUBSTRING(col,2,100) Ref from [Table] WHERE LEFT(col,1) = 'R') Receipts
INNER JOIN (SELECT SUBSTRING(col,2,100) Ref from [Table] WHERE LEFT(col,1) = 'J') Journals ON Receipts.Ref = Journals.Ref)

答案 1 :(得分:0)

select 
  Value
from MyTable
group by substring(Value,2,len(Value))
having count(*) = 1

答案 2 :(得分:0)

当然,这个怎么样?

create table t1 (
t varchar(20) 
)

go
insert into t1 (t) values ('R123'),('R234'),('R345'),('J123')
go

select Numerals 
from (
    select SUBSTRING(t,1,1) as Prefix, SUBSTRING(t,2,999) as Numerals
    from t1) a
group by Numerals
having COUNT(*) = 1