具有以下查询:
Select
'SpO2' = CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C120]))),
'Separator' = '% on .',
'FiO2' = CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C130]))),
'VALUE' = CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C120])))
+ '% on .'
+ CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C130])))
From...
对于给定的行,我可能会有以下内容:
SpO2 ='96',分隔符='%on。',FiO2 = '97',值='9'
或者...
SpO2 ='100',分隔符='%on。',FiO2 = '97',值='1'
显然,在#1中,我喜欢'96%on .97'和#2,我喜欢'100%on .97'。
显然,它正在进行字符串截断,只返回'VALUE'的第一个字符,但为什么呢?这在SQL Server 2008 R2上有效(我认为?)。使用SSMS 2012时发生了当前的故障。我是否已经忘记了?
答案 0 :(得分:0)
出于某种原因,我想到问题可能是我在两个转换值之间放置的字符串文字。
果然,以下似乎解决了这个问题:
Select
'VALUE' = CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C120])))
+ CONVERT(VARCHAR(MAX),'% on .')
+ CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(FLOAT, [C130])))
From...
虽然这在技术上是一个“答案”,但我确实希望有人向我解释。世界上为什么不是
'% on .'
简单地理解为VARCHAR
类型或至少CHAR(6)
类型?这与领先的“%”有关吗?这需要转义还是什么?