2016-07-04 6 views
0

数週間前に、カンマ区切りの値リストをOracleのIN句の一部として使用できる形式に変換するための助けを求める記事を投稿しました。ここに投稿へのリンクがあります。ヘルプが必要OracleサーバーからSQL Serverへの変換

Oracle invalid number in clause

答えは各値に対して個別の行にリストを分割することでした。ここで私が使用し終えた答えがあります。

SELECT trim(regexp_substr(str, '[^,]+', 1, LEVEL)) str 
    FROM (SELECT '1,2,3,4' str FROM dual) 
    CONNECT BY instr(str, ',', 1, LEVEL - 1) > 0 

カスタム関数を作成せずにSQL Serverで同様のことを行う方法はありますか?私はSTRING_SPLIT関数があることに気付きましたが、私はこのSQL Server上のアクセス権を持っていないようです。

アドバイスをいただければ幸いです。私は大部分の日にこれを刺すように努めてきました。

答えて

1

String_split MS SQL Serverでは、バージョン2016以降の関数を使用できます。古いバージョンを使用する場合は、同じようにいくつかのコード行を書くことができます。

declare @str varchar(100)='1,2,3,4' --initial string 
;with cte as (--build xml from the string 
select cast('<s>'+replace(@str,',','</s><s>')+'</s>' as xml) x 
) 
--receive rows 
select t.v.value('.[1]','int') value 
from cte cross apply cte.x.nodes('s') t(v) 
+0

これはうまくいった!ありがとう。 – JoeBrewing

+0

私はまだSQLに関して学ぶことが大変です。 – JoeBrewing

関連する問題