SQL Server SELECT返回包含单引号的字符串

时间:2019-03-21 21:12:35

标签: sql sql-server select

我需要从SELECT语句获取带有数据的格式化字符串。问题是我需要它用单引号引起来。这是一个例子。

我有一个包含2列TrainingSwipeID(int)和ExtendedDate(datetime)的表。例如,我在包含

的表中有一行

TrainingSwipeID = 123

TrainingEnd = 04/23/2019 09:00:00

我需要创建一个SELECT语句,该语句将返回格式化的字符串,例如 {'TrainingSwipeID':123,'TrainingEnd':04/23/2019 09:00:00}

我研究发现,您可以将单引号加倍以解决此问题。我没有运气就尝试了以下操作,并且收到以下错误“将varchar值'{'TrainingSwipeID':'转换为数据类型int时转换失败。”

SELECT '{''TrainingSwipeID'':' + TrainingSwipeID + '''TrainingEnd'':' + TrainingEnd + '}' 
AS MyFormattedString 
FROM TrainingSwipe

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

数字和日期/时间数据类型的优先级高于字符串数据类型。这就是为什么需要将数字类型转换为字符串并防止意外的隐式转换的原因。

SELECT '{''TrainingSwipeID'':' + CAST(TrainingSwipeID AS varchar(15)) 
      + '''TrainingEnd'':' + CONVERT( varchar(20), TrainingEnd , 101) + ' ' 
      + CONVERT( varchar(20), TrainingEnd , 8) + '}' 
AS MyFormattedString 
FROM TrainingSwipe

答案 1 :(得分:0)

我终于使用了@AlexKudryashev中最简单的答案,但是Luis的答案也很有效。

SELECT CONCAT('{''TrainingSwipeID'':' , TrainingSwipeID, ',''TrainingEnd'':', TrainingEnd, '}')