sql - 如何在 SQL Server 中的一列中的两个字符串之间选择一个字符串?

标签 sql sql-server sql-server-2008

我想获取表格列中两个字符串之间的字符串。如何选择列?我已经写了两边的字符串。任何人都可以帮助我如何在此处包含字符串中的列名吗?

DECLARE @Text NVARCHAR(MAX)

SELECT 
    SUBSTRING(@Text, CHARINDEX('Manufacturer Name : ', @Text), 
                     CHARINDEX('Manufacturer Part',@text) - CHARINDEX('Manufacturer Name : ', @Text) + LEN('Manufacturer Part')) 
FROM 
    tbIMPACArchiveNew 
WHERE 
    (Description LIKE '%Manufacturer Name: %' 
     OR Description LIKE '%Manufacturer Name : %') 
    AND Description LIKE '%Manufacturer Part%' 

预期结果:
Column A                                                       Expected result
Manufacturer Name : ABC Manufacturer Part Number : XVB-C2B4         ABC
Manufacturer Name : DEF Manufacturer Part Number : 3RH1924-1GP11    DEF
Manufacturer Name : ABJ Manufacturer Part Number : FLDP-IOM248-0001 ABJ
Manufacturer Name : HIJ Manufacturer Part Number : L12/5MLLD0035    HIJ
Manufacturer Name : abhkdk Manufacturer Part Number : PEH1083510    abhkdk
Manufacturer Name : 1245 PUMP Manufacturer Part Number : 02-1010-55 1245

最佳答案

对于以下示例数据

declare @table table (id int identity(1,1), data varchar(1000), descr varchar(1000))

insert into @table values ('Manufacturer Name : Manufacturer 1 Manufacturer Part : asjdfj','First Manufacturer')
insert into @table values ('Manufacturer Name : Manufacturer 2 Manufacturer Part : asjsadfasdfdfj','Second Manufacturer')
insert into @table values ('Manufacturer Name : Manufacturer 3 Manufacturer Part : er6ty','Third Manufacturer')

您可以使用
select substring(data, 
                 charindex('Manufacturer Name : ', data) + len('Manufacturer Name : '),
                 charindex('Manufacturer Part : ',data) - len('Manufacturer Part :') - 2) as Manufacturer_Name
       , descr
from @table

如果您注意到我正在删除子字符串末尾的 2 个字符以消除 Manufacturer Part 中的 'M'和实际文本之前的空间。您可以使用 RTRIM但我选择了这种方式。

关于sql - 如何在 SQL Server 中的一列中的两个字符串之间选择一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618519/

相关文章:

sql-server-2008 - 优化器忽略过滤的索引条件

sql - 最好的 sql server 客户端工具和刷新管理工作室编辑窗口?

php - 用户通过简单的 If 检查

java - Spring JDBCTemplate 执行不抛出异常

sql-server - 为什么 SQL Server 不能在 Novell 服务器上运行?

mysql - 在 mysql 中替换 count(*) OVER ()

sql - 删除数字

sql - 将两个小查询(按不同值分组)合并为一个查询

java - 来自数据库的 JSP 下拉列表

SQL Server 2008 : setting default location for mdf/ldf