0
私がコンマを追加して分離している列を連結しようとしています。私は、最後のカンマを削除したいと、私はこれを行うに考えることができる唯一の方法は、以下の複雑な方法を使用している:SQL連結された列から最後のカンマを削除します
SELECT
id,
CASE WHEN LEN(
ISNULL(CASE WHEN intExtraTime > 0 THEN Convert(varchar(3),intExtraTime) + '% Extra Time, ' END,'') +
ISNULL(CASE WHEN intprocessor = 1 THEN 'Laptop, ' END,'') +
ISNULL(CASE WHEN intRest = 1 THEN 'Rest Break, ' END,'') +
ISNULL(CASE WHEN intReader = 1 THEN 'Reader, ' END,'') +
ISNULL(CASE WHEN intScribe = 1 THEN 'Scribe, ' END,''))>0
THEN
SUBSTRING(
ISNULL(CASE WHEN intExtraTime > 0 THEN Convert(varchar(3),intExtraTime) + '% Extra Time, ' END,'') +
ISNULL(CASE WHEN intprocessor = 1 THEN 'Laptop, ' END,'') +
ISNULL(CASE WHEN intRest = 1 THEN 'Rest Break, ' END,'') +
ISNULL(CASE WHEN intReader = 1 THEN 'Reader, ' END,'') +
ISNULL(CASE WHEN intScribe = 1 THEN 'Scribe, ' END,''),1,
LEN(
ISNULL(CASE WHEN intExtraTime > 0 THEN Convert(varchar(3),intExtraTime) + '% Extra Time, ' END,'') +
ISNULL(CASE WHEN intprocessor = 1 THEN 'Laptop, ' END,'') +
ISNULL(CASE WHEN intRest = 1 THEN 'Rest Break, ' END,'') +
ISNULL(CASE WHEN intReader = 1 THEN 'Reader, ' END,'') +
ISNULL(CASE WHEN intScribe = 1 THEN 'Scribe, ' END,''))-1)
END
FROM dbo.Candidate AS ExamOptions
誰もがこれを行うには良い、よりクリーンな方法を知っていますか?
タグ、使用しているDBMS:私は
stuff()
を使用して最初カンマを削除することによってこれを行うだろう。そのコードは製品固有です。 – jarlhコードは製品固有ではありません。 isnullステートメントの最初のセットは、私が連結したいものです。私は最後にカンマを扱うためにこれを外側のケースに包み込んだ。 – Imran
ISNULLは製品固有のものです。変換は製品固有です。 LENもまた文字列連結の場合は+です。 – jarlh