首页 > 解决方案 > 尝试提取 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]

标签: sqlsql-server

解决方案


假设第二个位置,您可以使用一点XMLParseName()

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

推荐阅读