我有一列,其值为
1_987123
12_987654
在这里,我只需分隔列值中的第一个字母 '1'
和 '12'
。我尝试过 substring
和 charindex
来查找该值。我使用的语法是:
substring(Columnname,1,charindex('_',Columnname,1)-1)
。
这可以查找具有值的列。但就我而言,该列中有空白值。在这种情况下,上述语法会出错。尝试了像 coalesce
这样的场景,但它不接受,因为列数据类型是 varchar
。
您能给我建议其他选择吗?
最佳答案
您需要使用 CASE
表达式来处理不带 '_'
的值:
WITH Tbl(col) AS(
SELECT '1_987123' UNION ALL
SELECT '12_987654' UNION ALL
SELECT '12'
)
SELECT
CASE
WHEN CHARINDEX('_', col) > 0 THEN LEFT(col, CHARINDEX('_', col)-1)
ELSE col
END
FROM Tbl
关于sql-server - 使用特殊字符拆分 varchar 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585599/