【问题标题】:SQL Server 2008: Finding a value from a stringSQL Server 2008:从字符串中查找值
【发布时间】:2014-06-12 17:33:13
【问题描述】:
This might be a very simple select statement, here's my question.
I have a variable
DECLARE @A varchar(128) --declaring variable
SET @A = 'sus_123456_R5_20140506' --setting value
我想在 'sus_' 之后和 'R5' 之前找到值
此外,两者之间的值不是固定长度。所以函数必须是动态的。
但是它总是有 sus 和 _R5_date。这是恒定的。
SET @A = 'sus_129_R5_20150408
Thanks
【问题讨论】:
标签:
sql-server
select
dynamic
charindex
【解决方案1】:
将SUBSTRING 与CHARINDEX 结合使用:
SELECT SUBSTRING(@A,CHARINDEX('sus_',@A,0)+4,CHARINDEX('_R5',@A,0)-5)
【解决方案2】:
您可以使用SUBSTRING() 和CHARINDEX() FUNCTION 尝试一次
DECLARE @A varchar(128) --declaring variable
SET @A = 'sus_123456_R5_20140506'
select substring(@A,charindex('_',@A)+1,charindex('r5',@A)- (2+charindex('_',@A)))
结果:123456
(OR)这个使用LEFT(),RIGHT()和CHARINDEX()函数。
DECLARE @A varchar(128)
SET @A = 'sus_129_R5_20150408'
select right(left(@A,charindex('R5',@A) - 2),charindex('_',@A) - 1)
结果:129
阅读更多关于String Function