考虑下表:

MyValue
--------------------
123
122_DELETED
45670
42425
43_NO_VIEW
4365463_CORRUPT
53
4335_NO_VIEW_ALLOWED

我试图只得到返回的数字。换句话说:在第一个下划线 ( _ ) 之后将所有内容串起来:
select
  left(MyValue, charindex(('_', MyValue)-1)
from
  DB.Table

但是,这会返回错误 Invalid length parameter passed to the LEFT or SUBSTRING function. 我相信这是因为如果当前值没有下划线(例如 NULL ),该值是 123

我该如何解释这个异常?任何帮助是极大的赞赏。

我在 SQL Server 2008 上。

最佳答案

试试这个!

select myval,case when myval like '%[_]%' then
substring(myval,1,patindex('%[_]%',myval)-1) else myval end from t

## DEMO USING PATINDEX

## DEMO USING CHARINDEX

关于sql - 选择检索值的子串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23968932/

10-11 09:16