SQL Server SELECT для возврата строки, включающей одинарные кавычки - PullRequest
0 голосов
/ 22 марта 2019

Мне нужно получить отформатированную строку с данными из оператора SELECT.Проблема в том, что мне нужно, чтобы он возвращался с одинарными кавычками.Вот пример.

У меня есть таблица, которая содержит 2 столбца TrainingSwipeID (int) и ExtendedDate (datetime).Для примера у меня есть строка в таблице, которая содержит

TrainingSwipeID = 123

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

Мне нужно создатьОператор SELECT, который возвращает форматированную строку, такую ​​как {'TrainingSwipeID': 123, 'TrainingEnd': 23.04.2009 09:00:00}

Я исследовал и обнаружил, что вы можете удвоить одинарные кавычкичтобы обойти эту проблему.Я безуспешно попробовал следующее и получаю следующую ошибку: «Преобразование не удалось при преобразовании значения varchar '{' TrainingSwipeID ':' в тип данных int."

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

Может кто-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Числовой тип и тип данных даты / времени имеют более высокий приоритет, чем строковые типы данных.Вот почему вам необходимо преобразовать числовые типы в строки и предотвратить нежелательные неявные преобразования.

SELECT '{''TrainingSwipeID'':' + CAST(TrainingSwipeID AS varchar(15)) 
      + '''TrainingEnd'':' + CONVERT( varchar(20), TrainingEnd , 101) + ' ' 
      + CONVERT( varchar(20), TrainingEnd , 8) + '}' 
AS MyFormattedString 
FROM TrainingSwipe
0 голосов
/ 25 марта 2019

Я, наконец, использовал самый простой ответ от @AlexKudryashev, но ответ Луиса тоже сработал.

SELECT CONCAT('{''TrainingSwipeID'':' , TrainingSwipeID, ',''TrainingEnd'':', TrainingEnd, '}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...