sql - 尝试提取 2 个字符“|”之间的数字 微软 SQL
问题描述
我有列,需要在 2 个管道之间提取数字|
,里面的示例数据是AAA|12345678|#RRR
。我需要得到这个号码12345678
。
我的代码是:
SELECT SUBSTRING(column_name,CHARINDEX('|',column_name) + 1, CHARINDEX('|',column_name) - CHARINDEX('|',column_name) - 1)
FROM [name].[name].[table_name]
解决方案
假设第二个位置,您可以使用一点XML
或ParseName()
XML 示例
Declare @YourTable table (ID int,column_name varchar(max))
Insert Into @YourTable values
(1,'AAA|12345678|#RRR')
Select ID
,SomeValue = Cast('<x>' + replace(column_name,'|','</x><x>')+'</x>' as xml).value('/x[2]','varchar(max)')
From @YourTable
ParseName() 示例
Select ID
,SomeValue = parsename(replace(column_name,'|','.'),2)
From @YourTable
两者都会返回
ID SomeValue
1 12345678
推荐阅读
- if-statement - 交易视图的 Pine 脚本:如何在特定时间范围内显示
- javascript - 如何使用 jquery 替换会话存储值中的文本
- javascript - NPM 私有包自定义构建
- python - 列出子网 AWS 下的所有组件
- jenkins - 我可以使用带有 jenkins 选择参数的 curl 命令触发 Jenkins 构建吗?
- java - 将 Spring Security auth.getName() 传递给前端
- scala - kafka 直接流和 seekToEnd
- python - 找不到如何以这种方式将 DataFrames 与 pandas 组合
- javascript - Google Chrome - Javascript 书签搜索引擎 - 意外令牌
- babeljs - Babel 7 不包括 polyfill