tsq*_*00b 4 sql-server substring case sql-server-2012 charindex
我需要用 CASE 语句评估一个字段。字段名称是 Commodity 并且是一个 varchar(255)。值不同,我需要在特定字符之后从中提取特定部分。字符是“>”。通过使用以下代码,我能够想出我想要在 > 之后返回的值:
SUBSTRING(Commodity, CHARINDEX('>', Commodity) + 2, LEN(Commodity))
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何将其应用到我的 CASE 语句中。我需要测试是否为空,然后只为它分配一个“无商品”的值。然后我需要测试 > 的存在,然后实现上面的代码以返回值。然后我需要测试什么时候没有 > 但它不为空并且只返回 Commodity 字段的值。
你只需要在when子句中有这三个条件。您可以使用charindex来确保>字符串中存在该字符:
CASE
WHEN commodity IS NULL THEN 'No Comodity'
WHEN CHARINDEX('>', Commodity) > 0 THEN
SUBSTRING(commodity, CHARINDEX('>', commodity) + 2, LEN(commodity))
ELSE comodity
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12589 次 |
| 最近记录: |