1

Order::Resource(PPP32#BB300320LQ00J#AAAR05504) 最初のテーブルに依存する2番目のテーブルがあるため、Consesという名前のテーブルにConsという名前の列があります。秒テーブルからすべてのデータを取得したいのですが、以下のように手動で取得しましたが、結果は問題ありません。

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');

誰かがこれを行う方法を知っていますか?

4

1 に答える 1

1

文字列操作を行うだけです。

substringcharindexchar_lengthrightおよび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))
于 2012-08-29T09:13:43.413 に答える