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

SQL Server中连字符之间的拆分字符串文本分隔符,sql,sql-server,Sql,Sql Server,在工作中,我遇到了一个问题: 我有一个结果字符串: Select Code From myTable 当我查询数据时,我想取左边的链“\ux” 结果应该是: Code ----------- ABCD_12 EBC_11 DEEDC_1 谢谢我们可以使用左和CHARINDEX提取之前的零件 LEFT函数返回具有指定字符数的字符串的左侧部分。函数返回所搜索字符的位置 查询 Code ------------- ABCD EBC DEEDC

在工作中,我遇到了一个问题:

我有一个结果字符串:

Select Code From myTable
当我查询数据时,我想取左边的链“\ux”

结果应该是:

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

谢谢

我们可以使用
CHARINDEX
提取
之前的零件

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

查询

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

更新:

如果任何字符串没有
,则使用
大小写表达式检查该字符串是否有

查询

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

试试这个:

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

它工作,但结果是:在“12 11 1我想要留下数据”之后,它不工作。错误:传递给LEFT或SUBSTRING函数的长度参数无效。