sql-server - 下划线之间的子字符串 - 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
解决方案
假设您想要第三个位置,也许是一点 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
推荐阅读
- spring - JPA 规范首先按特定值排序
- json - 如何在 JSON 中添加脚注
- angular - Angular Material Datepicker 不会显示在页面中
- javascript - 如何创建一个不被其在 JavaScript 中的引用修改的常量数组?
- scala - Scala - 如何删除具有 Null 和空白值的 Scala 映射的键
- xaml - 当所有孩子都失去焦点时的WPF容器事件
- python - 如何旋转 Python 列表以使特定值居中
- python - 如何汇总列表中单个项目的总数?
- android - 一个活动中的两个布局可见性问题
- javascript - 显示键盘 android (cordova)