Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以从同一个表中搜索部分匹配的字符串?_Sql_Sql Server - Fatal编程技术网

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

Sql 是否可以从同一个表中搜索部分匹配的字符串?,sql,sql-server,Sql,Sql Server,我有一个表,假设表中有带有项目编号的项目: 12345 12345_DDM 345653 2345664 45567 45567_DDM 我在创建一个查询时遇到问题,该查询将获取所有的_DDM和具有相同前缀数字的对应项 因此,在本例中,我希望同时返回12345和12345_DDM etc使用like查找带有_DDM的行 使用EXISTS查找带有数字且具有_DDM行的行 使用like查找带有_DDM的行 使用EXISTS查找带有数字且具有_DDM行的行 请尝试以下查询: --sample d

我有一个表,假设表中有带有项目编号的项目:

12345
12345_DDM
345653
2345664
45567
45567_DDM
我在创建一个查询时遇到问题,该查询将获取所有的_DDM和具有相同前缀数字的对应项


因此,在本例中,我希望同时返回12345和12345_DDM etc

使用
like
查找带有_DDM的行

使用
EXISTS
查找带有数字且具有_DDM行的行


使用
like
查找带有_DDM的行

使用
EXISTS
查找带有数字且具有_DDM行的行

请尝试以下查询:

--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
请尝试以下查询:

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

如果列“%\u DDM”
,您也可以使用
CHARINDEX(列“\u DDM”)>0
…那么您希望同时返回12345和12345\u DDM等?什么样的问题?您的查询是什么?您遇到了什么错误?@jarlh是的,先生。
WHERE列如“%$DDM”
,您也可以使用
CHARINDEX(列,“%$DDM”)>0
…所以您希望同时返回12345和12345\U DDM等?什么样的问题?您的查询是什么?出现了什么错误?@jarlh是的,先生。我认为SQL不支持| |server@Sentinel,应该是这样。(对于t1 12345,是否存在t2 12345DDM?)非常感谢各位。我对exists和embedded select一直不太熟悉。我认为SQL中不支持| |server@Sentinel,应该是这样。(对于t1 12345,是否存在t2 12345DDM?)非常感谢各位。我对存在和嵌入的选择从来都不好。