Обрезать запятую в конце XML-запроса с псевдонимом [text ()] - PullRequest
0 голосов
/ 02 июля 2018

У меня есть следующее sql, и мне нужно удалить запятую (если она существует). Я любитель, когда дело доходит до sql, поэтому небольшая помощь / руководство было бы здорово.

SELECT
    fse.FormSubmissionId,
    CASE
        WHEN fse.Type = 4
            THEN
                (SELECT fse2.FormElementItemText + ', ' as [text()] 
                 FROM dbo.FormSubmissionElement as fse2 
                 WHERE fse2.FormElementId = fse.FormElementId 
                 ORDER BY fse2.FormElementItemText DESC 
                 FOR XML PATH(''))
    END as UserSubmission

Я огляделся и нашел несколько способов обрезать запятую до конца, как здесь и здесь . Но я не уверен, как включить его в мой текущий оператор select, поскольку псевдоним [text()] для XML.

Я уверен, что это глупо просто, но я был бы признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Если вы добавите запятую в начале, а не в конце, вы можете использовать stuff для ее удаления, например:

SELECT
fse.FormSubmissionId,
CASE
    WHEN fse.Type = 4
        THEN
            STUFF((SELECT ', ' +fse2.FormElementItemText as [text()] 
                   FROM dbo.FormSubmissionElement as fse2 
                   WHERE fse2.FormElementId = fse.FormElementId 
                   ORDER BY fse2.FormElementItemText DESC 
                   FOR XML PATH('')), 1, 2, '')
END as UserSubmission

Причина в том, что вы знаете, что строка всегда начинается с индекса 1, но чтобы узнать, какой последний индекс, вы должны либо выполнить выбор дважды, либо использовать переменную.

0 голосов
/ 02 июля 2018

Вы можете переписать его как:

SELECT
    fse.FormSubmissionId,
    CASE
       WHEN fse.Type = 4 THEN
       STUFF((SELECT ', ' + fse2.FormElementItemText as [text()]-- ', ' goes first
       FROM dbo.FormSubmissionElement as fse2 
       WHERE fse2.FormElementId = fse.FormElementId
       ORDER BY fse2.FormElementItemText DESC 
       FOR XML PATH('')
       ),1,2,'')    -- stuff will remove first 2 characters
END as UserSubmission
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...