我试图选择带有并不总是存在的分隔符的字符串的第一部分。我有下面的
SUBSTRING
函数,当分隔符存在时效果很好,但当分隔符不存在时,不会返回任何内容,即下面的查询
SELECT SUBSTRING(sc.location +'/',0, CHARINDEX('/', sc.location)) FROM sc
对于值 Tower #1
,产生
Tower #1/Room #3
,但如果输入只是 NULL
,则产生
Tower #5
如果分隔符不存在,有没有办法返回完整字符串?
只需使用
CASE
至 select
。你可以尝试一下,
SELECT
CASE WHEN CHARINDEX('/', sc.location) > 0 THEN SUBSTRING(sc.location +'/',0, CHARINDEX('/', sc.location))
ELSE sc.location END
FROM sc
另类,简单一点。
replace( left( email, patindex( '%@%', email+'@' ) ), '@', '')
此示例将提取电子邮件地址的名称部分,将所有内容提取到“&”号,然后删除“&”号。如果没有 & 符号,则附加 & 符号表示您已获得全部内容。