1

可能是一个非常简单的问题要回答,但我一生都无法在任何地方找到它。

我正在寻找使用 FOR XML Path 从数据库中构建选择列表选项。到目前为止,我有这个:

SELECT ID AS 'option/@value', Name AS [option]
FROM MyTable
FOR XML Path('')

这让我明白了:

<option value="1">Item 1</option><option value="2">Item 2</option>... and so on

是的,很简单的东西,但现在我想设置在 ID 为 1 的地方选择哪个选项。所以这应该只发生一次。所以我添加了这个:

SELECT 
    ID AS 'option/@value', Name AS [option],
    CASE WHEN ID=1 THEN 'selected' ELSE '' END AS 'option/@selected',
FROM MyTable
FOR XML Path('')

输出:

<option value="1" selected="selected">Item1</option><option value="2" selected="">Item2</option>

虽然这在技术上确实设置了正确的属性,但我只需要在 case 为真的选项上使用属性 @selected。

任何帮助或指向正确方向的东西都会受到极大的欢迎。

4

1 回答 1

1

而不是在 case 语句中使用空字符串返回 Null

选择
    ID AS 'option/@value',
    CASE WHEN ID=1 THEN 'selected' ELSE null END AS 'option/@selected',
    名称 AS [选项]    
从我的表
FOR XML 路径('')
于 2012-07-20T15:16:51.353 回答