に基づいています。こんにちはすべて私はSQLの初心者です。この列にはdilution_nameという名前の列があります。値はA、B、Cなどのコンマで区切られた形式です。これらの値は、A、B、C、場合によってはA、B、C、Dのような値がいくつかの行のように変化することがあります。値は、コンマで書かれることになる残りの部分は、私が試してみました nullにする必要があります3つの値があるはずですコンマで区切られた値はSQLの条件
select ParsedData.*
from dilution_table mt
cross apply (select str = mt.dilution_name + ',,') f1
cross apply (select p1 = charindex(',', str)) ap1
cross apply (select p2 = charindex(',', str, p1 + 1)) ap2
cross apply (select p3 = charindex(',', str, p2 + 2)) ap3
cross apply (select p4 = charindex(',', str, p3 + 3)) ap4
cross apply (select p5 = charindex(',', str, p4 + 4)) ap5
cross apply (select p6 = charindex(',', str, p5 + 5)) ap6
cross apply (select val1 = substring(str, 1, p1-1)
, val2 = substring(str, p1+1, p2-p1-1),
val3 = substring(str, p2+1, p2-p1-1),
val4 = substring(str, p3+1, p2-p1-1),
val5 = substring(str, p4+1, p2-p1-1),
val6 = substring(str, p5+1, p2-p1-1),
val7 = substring(str, p6+1, p2-p1-1)
) ParsedData
[sample data][1]
、http://stackoverflow.com/questions/40609102/tsql-parse-string-with-4-delimiters/40609526#40609526 –
@vkp覗いて見て下さい - 私はこれが二重引用符であることに同意するが、2つの簡単な点がある。 1)OP列が行ではない、2)少なくとも、複数ステートメントのループではなく、セットベースのスプリッタを指している。 –