我在名为Conses的表中有一个名为Cons的列,因为Order::Resource(PPP32#BB300320LQ00J#AAAR05504) 我有第二个表,该表取决于第一个表。我想从秒表中获取所有数据,并且按如下所示手动进行操作,结果还可以
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');
有人知道怎么做这个吗?
您只需要执行字符串操作即可。
使用字符串,CHARINDEX,CHAR_LENGTH,右和左功能:)
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))