考虑下表:
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/