Я использую STUFF и XML PATH, так как я обязательно использую SQL Server 2016. Я работал над этим запросом и не могу понять, как вернуть пустую или пустую запись при использовании STUFF и XML PATH. Ниже приведен фрагмент запроса.
SELECT
Names = STUFF((SELECT '; ' + CONCAT(t3.FirstName, ' ', t3.LastName)
FROM table1 t1
LEFT JOIN table2 t2 ON t0.columnID = t2.columnID
LEFT JOIN table3 t3 ON t3.columnID = t3.columnID
FOR XML PATH('')), 1, 1,''),
Проблема в том, что при отсутствии фамилии / имени этот запрос возвращает разделители '; ; ' но мне нужно, чтобы он возвращал пустое значение, если нет фамилии / имени.
CASE
, чтобы вместоSELECT '; ' + CONCAT(t3.FirstName, ' ', t3.LastName)
сделатьSELECT CASE WHEN ISNULL(t3.FirstName, '') = '' AND ISNULL(t3.LastName, '') = '' THEN '' ELSE '; ' + CONCAT(t3.FirstName, ' ', t3.LastName) END
- person Ryan Wilson   schedule 15.01.2021'; ;'
? Так вы работаете сSET CONCAT_NULL_YIELDS_NULL OFF
? Имейте в виду, что параметрOFF
устарел, он использовался в течение многих лет и будет эффективно удален в будущей версии SQL Server. Рассмотрите возможность переключения кода, который вместо этого использует конструкцииISNULL
иNULLIF
. - person AlwaysLearning   schedule 16.01.2021