Мне нужно выполнить следующее:
SELECT * FROM [MY_TVF](9186)
FOR XML AUTO, ELEMENTS
И замените все значения NULL
пустой строкой ''
, чтобы включить их в XML. Я знаю, что могу выплюнуть элементы с атрибутом xsi:nil="true"
, установив ELEMENTS XSINIL
, но я этого не хочу.
Я нашел этот вопрос: Преобразовать NULL в пустую строку SQL Server, где в ответе говорится, что я могу использовать ISNULL()
для своего запроса. Пробовал вот так:
ISNULL((SELECT * FROM [MY_TVF](9186)),'')
FOR XML AUTO,ELEMENTS
Но я не могу заставить его работать. Я получаю следующую ошибку:
Сообщение 102, уровень 15, состояние 1, строка 1 Неправильный синтаксис рядом с ','.
Что я могу сделать, чтобы просто заменить все значения NULL
пустой строкой, чтобы они были включены в XML?
Редактировать
Невозможно заменить *
именами столбцов. Есть причина, по которой мы используем TVF, здесь около 40 столбцов, и они могут со временем меняться. Мой запрос - просто выбрать все и вернуть его как XML.
isnull()
илиcoalesce()
, если перечисляете столбцы по отдельности. Они не обрабатывают несколько столбцов одновременно. - person Gordon Linoff   schedule 08.08.2014*
! - person MarioDS   schedule 08.08.2014SELECT *
- плохая идея по ряду причин, и сейчас вы столкнулись с одной из них. - person Dave.Gugg   schedule 08.08.2014