使用SQL从字段中选择1个字

时间:2011-06-24 20:14:09

标签: sql sql-server substring

我需要从列中提取“SRN = 123”(123的长度是动态的,SRN =是一致的)。数据可以是任何内容,没有一致的格式

  

456 lorem limpsump SRN = 123和一些   更多的事情3。

我在尝试使用charindex找到SRN = 123的终点来获取长度时遇到了麻烦,有什么帮助吗?

SUBSTRING(t.Instructions, 
                             CharIndex('SRN=', t.Instructions) + 10, 
                             (CHARINDEX('SRN=', t.Instructions )-(CharIndex('SRN=[^0-9.-]', t.Instructions) + 10)))

4 个答案:

答案 0 :(得分:1)

假设GIANT假设您需要的字符串末尾有空格。

declare @str as varchar(100)
set @str='456 lorem limpsump SRN=123 and some more things 3'

--for testing, find the starting point
select charindex('SRN=',@str)

--for testing, find the ending point
select charindex(' ',@str,charindex('SRN=',@str))

--find your substring 
select substring(@str,charindex('SRN=',@str),charindex(' ',@str,charindex('SRN=',@str))-charindex('SRN=',@str))

答案 1 :(得分:1)

select 'SRN='+left(stuff(@S, 1, charindex('SRN=', @S)+3, ''), patindex('%[^0-9]%', stuff(@S, 1, charindex('SRN=', @S)+3, '')+' ')-1)

http://data.stackexchange.com/stackoverflow/q/104003/

答案 2 :(得分:0)

抱歉...错过了你只想要SRN = 12345

DECLARE @STRING VARCHAR(1000)
SELECT @STRING = '456 lorem limpsump SRN=123456 and some more things 3.'
SELECT SUBSTRING(@STRING, CHARINDEX('SRN=', @string, 0), CHARINDEX(' ', @string, CHARINDEX('SRN=', @string, 0)) - CHARINDEX('SRN=', @string, 0))

答案 3 :(得分:0)

这有效

with t as(
select '456 lorem limpsump SRN=12378 and some more things 3.' as col )

select substring(col,charindex('SRN=',col)+4,
charindex(' ',col,charindex('SRN=',col))-charindex('SRN=',col)-4)
from t