我在一个名为Conses的表中有一个名为Cons的列为Order::Resource(PPP32#BB300320LQ00J#AAAR05504)
我有第二张桌子,这取决于第一张桌子。
我想从秒表中获取所有数据,我手动完成,如下所示,结果没问题
select * from so_db..item where id =('PPP32' )
and sub_id =('BB300320LQ00J')
and tem_id =('AAAR05504');
但我想在括号内替换另一个查询,该查询必须获得上述列的一部分,如下所示:
id ='#'字符
之前的列的第一部分sun_id ='#'字符
之间列的中间部分tem_id =列的最后部分
select * from so_db..item where id =( select Cons from er_db..Conses where UsedBy_ = 'mmmf8c713f490f8133c00e16ffdea136add')
and sub_id =(select Cons from er_db..Conses where UsedBy_ = 'mmmf8c713f490f8133c00e16ffdea136add')
and tem_id =(select Cons from er_db..Conses where UsedBy_ = 'mmmf8c713f490f8133c00e16ffdea136add');
有人知道怎么做吗?
答案 0 :(得分:1)
你只需要进行字符串操作。
使用substring,charindex,char_length,right和left功能:)
declare @string varchar(50)
select @string = 'Order::Resource(PPP32#BB300320LQ00J#AAAR05504)'
declare @start int, @end int, @secondstring varchar(100)
select @start = charindex('#',@string)
select @secondstring = substring(@string, @start+1, len(@string))
select @end = charindex('#',@secondstring)
select substring(@string,charindex('(', @string)+1, @start-1-charindex('(', @string)),
substring(@string,@start+1,@end-1),
substring(@string, @start+@end+1, len(@string)-(@start+@end+1))