选择字符前的字符串

时间:2019-06-06 23:54:03

标签: sql-server

我有一个可能带有或不带有下划线和数字后缀的字段。我想选择_之前的字符串部分,但是_并不总是存在

在另一个问题中,我发现了这一点:

SUBSTRING([LineNumber], 0, CHARINDEX('_', [LineNumber]))

它对于MH31014329_1很好用,然后变成MH31014329,但是在没有_1的地方产生空白

一个用于测试=''的案例语句有效,但是该记录集超过10万行,我认为效率不高。

如何以最有效的方式做到这一点?

1 个答案:

答案 0 :(得分:3)

charindex()上添加“失败保护”,如果已经存在,则不会有任何危害。

SUBSTRING([LineNumber], 0, CHARINDEX('_', [LineNumber]+'_'))