我正在一个有两个下表的项目:
#temp1:
#temp2:
因此,对于#temp2表上的每个客户端,我必须检查子字符串(outcome,1,12)是否与#temp1表的text1 / text2 / text3 / text4相匹配。如果它们匹配,则串联text1 / text2 / text3 / text4(将#temp1上的匹配子字符串替换为#temp2的结果)。最终输出如下:
#output desired:
因此对于CID 1001,子字符串(#temp2.outcome,1,12)= SOP201800205与#temp1.text2 = SOP201800205相匹配。所以我的输出应该是
Concat(#temp1.text1,#temp2.outcome)
我的试用版演示在这里
https://rextester.com/CAEP69354
有帮助吗?!
答案 0 :(得分:1)
如果我正确理解了您的问题,则您实际上是在尝试找出#temp1
中的任何值是否完全包含在outcome
的{{1}}中。尽管有#temp2
参数,但我认为您并不在乎字符串的长度,因此我使用了SUBSTRING
值的长度来设置#temp1
{{1}的参数}。
如果正确,那么您只需要一个更可靠的#temp2
语句。这应该为您工作:
SUBSTRING
答案 1 :(得分:0)
只有一种情况是text1或text2或text3或text4的子字符串
等于t2.CID的结果
select
t1.cid,
substring(t1.text1,1,12),
substring(t1.text2,1,12),
substring(t1.text3,1,12),
substring(t1.text4,1,12),
substring(t2.outcome,1,12) as outcome,
case when substring(t1.text1,1,12) = substring(t2.outcome,1,12) then 'text1 = outcome'
end,
case
when substring(t1.text2,1,12) = substring(t2.outcome,1,12) then 'text2 = outcome'
end,
case when substring(t1.text3,1,12) = substring(t2.outcome,1,12) then 'text3 = outcome'
end,
case when substring(t1.text4,1,12) = substring(t2.outcome,1,12) then 'text4 = outcome'
end
from #temp1 t1
join #temp2 t2 on t1.cid = t2.cid
我认为您的子字符串有误
您期望substring(t1.text2,1,12) = substring(t2.outcome,1,12)
或substring(t1.text2,1,11) = substring(t2.outcome,1,11)
您是否要检查子字符串substring(t1.text,1,12)?