可以从同一个表中搜索部分匹配的字符串吗?

时间:2018-06-12 14:42:58

标签: sql sql-server

我有一张桌子,让我们说桌子上有项目编号的项目:

12345
12345_DDM
345653
2345664
45567
45567_DDM

我在创建查询时遇到问题,该查询将获取所有_DDM和具有相同前缀数字的相应项。

所以在这种情况下,我希望返回12345和12345_DDM等

2 个答案:

答案 0 :(得分:6)

使用GPG.vhd(21): Illegal sequential statement. GPG.vhd(31): No feasible entries for subprogram "anzahl_1". Bad expression in left operand of infix expression "=". GPG.vhd(31): Type error resolving infix expression "=" as type std.STANDARD.BOOLEAN. 查找带有_DDM的行。

使用like查找数字也具有_DDM行的行。

working demo

EXISTS

答案 1 :(得分:0)

尝试此查询:

--sample data
;with tbl as (
    select col from (values ('12345'),('12345_DDM'),('345653'),('2345664'), ('45567'),('45567_DDM')) A(col)
)

--select query
select col from (
    select col, 
           prefix, 
           max(case when charindex('_DDM', col) > 0 then 1 else 0 end) over (partition by prefix) [prefixGroupWith_DDM]
    from (
        select col,
               case when charindex('_DDM', col) - 1 > 0 then substring(col, 1, charindex('_DDM', col) - 1) else col end [prefix]
        from tbl
    ) a
) a where [prefixGroupWith_DDM] = 1