拆分字符串SQL Server中连字符之间的文本分隔符

时间:2017-12-05 08:37:13

标签: sql sql-server

Select Code From myTable

在一个jod,我有一个问题:

我有结果字符串:

 Code
-----------
 ABCD_12
 EBC_11
 DEEDC_1

当我查询数据时,我想取左边的链“_”

结果应该是:

     Code
   -------------
     ABCD
     EBC
     DEEDC

谢谢

2 个答案:

答案 0 :(得分:2)

我们可以使用 _ LEFT CHARINDEX之前提取部分。

LEFT 函数返回具有指定字符数的字符串的左侧部分。 CHARINDEX 函数返回搜索字符的位置。

<强>查询

select left([code], charindex('_', [code], 1) - 1) as [code]
from [myTable];

更新:

如果任何字符串没有_,则使用CASE表达式检查字符串是否有_

<强>查询

select left([code], 
            case when  charindex('_', [code] ) = 0 then len([code]) 
            else charindex('_', [code], 1) -1 end)
from [myTable];

<强> Find a demo here

答案 1 :(得分:1)

试试这个:

select SUBSTRING(Code, CHARINDEX('_', Code) + 1, LEN(Code))