pet*_*ter 11 sql t-sql sql-server sql-server-2008
我有一个名为Map_Data的表,数据如下:
ID SoCol Descol
125 case Per_rating when 5 then 'Good' when 4 then 'Ok' else null end D_Code
Run Code Online (Sandbox Code Playgroud)
我在这个特定的行上写了一个查询,查询是:
SELECT Params = ( SELECT DesCol + ' = ''' + SoCol + ''''
FROM dbo.Map_Data t1
WHERE ID = 125
FOR
XML PATH('')
)
Run Code Online (Sandbox Code Playgroud)
我得到的输出为:
D_Code = 'case per_rating
 when 5 then 'Good'
 when 4
 then 'Ok'
 end'
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么我得到'
'它,我怎么能纠正它?
Aar*_*and 15
这个微小的变化将使丑陋的实体消失,但它们不会消除回车(查看结果到文本的结果,而不是结果到网格,看看它们):
SELECT Params = ( SELECT DesCol + ' = ''' + SoCol + ''''
FROM dbo.Map_Data t1
WHERE ID = 125
FOR
XML PATH(''), TYPE
).value('.[1]', 'nvarchar(max)');
Run Code Online (Sandbox Code Playgroud)
如果你想摆脱CR/LF,你可以说:
SELECT Params = ( SELECT REPLACE(REPLACE(DesCol + ' = ''' + SoCol + '''',
CHAR(13), ''), CHAR(10), '')
FROM dbo.Map_Data t1
WHERE ID = 125
FOR
XML PATH(''), TYPE
).value('.[1]', 'nvarchar(max)');
Run Code Online (Sandbox Code Playgroud)
此外,我不确定您将如何使用输出,但如果您稍后将使用动态SQL对其进行评估,则需要'使用两个单引号('')替换嵌入的单引号().否则它会爆炸,因为它们也是字符串分隔符.