我有一个像 prop234
这样的字符串,字母部分具有固定长度,但数字部分可以是任意长度
我必须从 T-SQL 中的字符串中获取数字部分(在 SQL Server 2008 上)
我尝试使用SUBSTRING
函数,但我不知道数字部分的长度,因此无法提供第三个参数,即长度
SUBSTRING ( expression ,start , length )
我知道起始索引,但长度可以是任何内容
一种解决方案是
SELECT substring([ColumnName], 5, LEN(ColumnName) - 4)
因为起始索引是固定的,即字母部分的长度是4(固定)
是否有更好的解决方案?如果字母部分的长度不恒定怎么办?
最佳答案
select stuff('prop234', 1,4,'')
如果长度不是常数:
declare @t table(expression varchar(100))
insert @t values('propprop234')
select stuff(expression, 1, patindex('%_[0-9]%', expression), '') from @t
编辑:为了确保处理错误数据,例如前面没有文本或最后没有数字,这里有一个稍微不同的方法:
select stuff(expression, 1,patindex('%[^0-9][0-9]%', expression + '0'), '')
from @t
关于string - 在T-SQL中获取字符串的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11132734/