【发布时间】:2017-11-06 13:23:04
【问题描述】:
我知道这已经发布了一百万次,但我不知道如何删除此示例中的尾随逗号。我不想创建一个新列,我只想遍历每一列,解析逗号分隔符列表并打印出这些代码及其描述。
例如,如果列表是 GLU、VEG,那么我希望它打印: 无麸质,素食主义者。但是,我 fwr “不含麸质,素食主义者”,请注意最后的逗号。
这是我目前拥有的:
SELECT *,
CASE WHEN( RE.FOODOPTIONS LIKE '%GLU%') THEN 'Gluten free,'
WHEN( RE.FOODOPTIONS LIKE '%ALL%') THEN 'Food Allergies,'
WHEN( RE.FOODOPTIONS LIKE '%VEG%') THEN 'Vegetarian,'
WHEN( RE.FOODOPTIONS LIKE '%OTHER%') THEN 'Other,'
END
FROM RegExt AS RE
谢谢。
样本数据:
FOODOPTIONS: GLU, ALL, VEG
Results: Gluten free, Food Allergies, Vegetarian,
Desired Results: Gluten free, Food Allergies, Vegetarian
FOODOPTIONS: GLU
Results: Gluten free,
Desired Results: Gluten free
FOODOPTIONS: GLU, VEG
Results: Gluten free, Vegetarian,
Desired Results: Gluten free, Vegetarian
FOODOPTIONS 的值是由逗号分隔的代码列表。它能够列出它们,但在末尾包含逗号。
【问题讨论】:
-
我正在使用 SQL Server。应该包括那个开始。
-
您是否希望在映射中同时具有 '%GLU%' 和 '%VEG%' ?
-
扩展 B House 的问题 - CASE 语句一旦满足“真”条件就会停止评估。所以像'GLU,VEG'这样的字符串只会返回'Gluten Free'(因为GLU是你的CASE语句中的第一个测试条件。到目前为止(Leonhard&Gordon)的两个答案都避免了这种情况,并将成功解析'GLU'的字符串,蔬菜'。
-
奇怪的是我的原件确实解析了它,但它在末尾留下了逗号,因为我已将它包含在字符串中。我从没想过要双重反转它。我专注于使用 SUBSTRING 删除最后一个字符。这真的很聪明,很容易理解!感谢您的所有回复!
标签: sql sql-server