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?)非常感谢各位。我对存在和嵌入的选择从来都不好。