1
            SELECT Col1
    FROM Table
    WHERE Col2 = 63895746
    ORDER BY Col
    FOR XML PATH,TYPE

結果にNULLは必要ありません。col1 が null かどうかに関係なく、結果を < Cols >< /Cols > のようにラップしたい

この例では、テーブルには col2 = 63895746 の行が含まれていないため、空の結果セットが取得されるため、型ディレクティブはそれを NULL にして返します

4

6 に答える 6

5

ELEMENTS XSINIL を使用する必要があります。

ヌル列の空要素を含む

クエリをネストできない場合:

SELECT ISNULL(data.Col1,'< Cols >< /Cols >') AS Col1
FROM (
SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
) data

私のマシンではないので、テストが少し難しくなります。

于 2012-12-17T07:08:34.080 に答える
5

どうですか

;with mytmp (f1) as (
  SELECT Col1
  FROM Table
  WHERE Col1 = 123456
  ORDER BY Col1
  FOR XML PATH('col'),root('cols'),TYPE
  )
select isnull(f1, '<cols></cols>')
from mytmp;
于 2012-12-17T07:40:30.413 に答える
3
SELECT T.X
FROM
  (
  SELECT Col1
  FROM Table
  WHERE Col2 = 63895746
  ORDER BY Col
  FOR XML PATH, TYPE
  ) AS T
FOR XML PATH('Cols'), TYPE
于 2012-12-17T07:32:57.517 に答える
1

Col1 が文字列の場合、次を使用してこれを実現できます。

SELECT COALESCE(Col1,'')
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE

null値がある場合、空のタグが表示されます

于 2012-12-17T07:14:01.317 に答える
0

試す:

SELECT 
    ISNULL(Col1, '< Cols >< /Cols>') AS Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
于 2012-12-17T06:53:56.120 に答える