首页 > 解决方案 > 下划线之间的子字符串 - SQL Server 2008

问题描述

我的 SQL Server 2008 中存储了一个字符串,我想提取下划线之间的值。我有一个工作代码,但是当字符串的长度发生变化时会产生问题。你能告诉我一个更好的方法吗?

示例字符串是

'AAAA_BBBBUSEmail000000001_1234567_Normal_ABC_US' 

我想提取

'1234567'

这将始终介于倒数第二个和倒数第三个下划线之间。

我正在使用这段代码:

substring(right(sample_table.file_name, 21), 1, 7)

其中sample_table是表名,file_name是列名

输出应该是1234567

标签: sql-serversubstring

解决方案


假设您想要第三个位置,也许是一点 XML

例子

Declare @YourTable table (ID int,file_name varchar(max))
Insert Into @YourTable values
(1,'AAAA_BBBBUSEmail000000001_1234567_Normal_ABC_US')

Select ID
      ,SomeValue = Cast('<x>' + replace(file_name,'_','</x><x>')+'</x>' as xml).value('/x[3]','varchar(max)')
 From @YourTable

退货

ID  SomeValue
1   1234567

推荐阅读