如果分隔符存在,SQL 选择子字符串,否则给出完整字符串

问题描述 投票:0回答:2

我试图选择带有并不总是存在的分隔符的字符串的第一部分。我有下面的

SUBSTRING
函数,当分隔符存在时效果很好,但当分隔符不存在时,不会返回任何内容,即下面的查询

SELECT SUBSTRING(sc.location +'/',0, CHARINDEX('/', sc.location)) FROM sc
对于值

Tower #1

产生
Tower #1/Room #3
,但如果输入只是
NULL
,则产生 
Tower #5

如果分隔符不存在,有没有办法返回完整字符串?

sql regex string substring delimiter
2个回答
11
投票

只需使用

CASE
select
。你可以尝试一下,

SELECT 
     CASE WHEN CHARINDEX('/', sc.location) > 0 THEN SUBSTRING(sc.location +'/',0, CHARINDEX('/', sc.location))
          ELSE sc.location END
FROM sc

0
投票

另类,简单一点。

replace( left( email, patindex( '%@%', email+'@' ) ), '@', '')

此示例将提取电子邮件地址的名称部分,将所有内容提取到“&”号,然后删除“&”号。如果没有 & 符号,则附加 & 符号表示您已获得全部内容。

© www.soinside.com 2019 - 2024. All rights reserved.