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
任何人都知道一个更好的更清洁的方式做到这一点?
标签您正在使用的数据库管理系统。该代码是特定于产品的。 – jarlh
代码不是产品特定的。第一组isnull语句是我想要连接的。我已经把它包装在一个外壳中,以便在最后处理逗号。 – Imran
ISNULL是产品特定的。转换是产品特定的。 LEN也是,+用于字符串连接。 – jarlh