0

SQL select ステートメントに次のものがあります。その目的は、多数の結果を照会し、それらをコンマで区切って返すことです。

SUBSTRING((
        SELECT ', ' + s.jaopr
        FROM jjops s
        WHERE s.jajob = o.jajob
        ORDER BY s.jaseq
        FOR XML PATH('')
        ), 2, 1000)

必要な結果が得られていますが、各結果の文字数は 2 文字から 5 文字までさまざまです。そのため、余分なスペースが結果に返されます。
例: AA , AAA , BBBBB, BBBB , CCCCC

返された結果が 5 文字未満の場合、余分なスペースがないように部分文字列を変更するにはどうすればよいですか?

a が何であるかは理解していると思いますが、ソリューションを検索するときにこれをコピーしたため、 がSubstring何をするのかよくわかりません。XML PATH

4

2 に答える 2

0

ここで使用しているように見える XML パスの通常の使用法 (引用符で「値」のようなものを入れて、実際の使用目的のヒントを得る) は、通常はいくつかの行数になる結果セットを連結することです。 、すべての結果が単一の文字列にある単一の行に。

その場合、ここで起こるべきことは、部分文字列関数が 2 番目の文字から 1000 までの内部クエリの結果全体を返すことです。上記のselectステートメントだけで5行の結果があり、最後にXMLパスがない場合の効果は次のようになります。

A
B
C
D
E

XML Path コマンドは、A、B、C、D、E を与えるはずです。

コンマの後のスペースに注意してください。部分文字列を使用して最初のカンマを取り除こうとしているようですが、途中のカンマの後のスペースは取り除かれません。

私がこれらの仮定について正しければ、コンマの周りの引用符内のスペースを削除するだけで、ほとんどの場合、必要な効果が得られます。

ただし、これを達成するために受け入れられている方法については、このようなスレッドを参照してください。

于 2013-10-03T22:25:58.363 に答える