从SQL server表中的varchar列获取子字符串

从SQL server表中的varchar列获取子字符串,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一个名为Name的列,在该列中有值 Name 001 BASI Distributor (EXAM) 002 BASI Supplier (EXAM2) MASI DISTRIBUTOR (EXAM002) MASI SUPPLIER (EXAM003) EXAM_ND Distributor Success System Test (EXAM_ND) EXAM_SS Supplier Success System Test (EXAM_SS) 现在,我想将()中的值与整个字符串分开。我将

我有一个名为Name的列,在该列中有值

Name
001 BASI Distributor (EXAM)
002 BASI Supplier (EXAM2)
MASI DISTRIBUTOR (EXAM002)
MASI SUPPLIER (EXAM003)
EXAM_ND Distributor Success System Test (EXAM_ND)
EXAM_SS Supplier Success System Test (EXAM_SS)
现在,我想将
()
中的值与整个字符串分开。我将如何获得它我尝试了
子字符串(名称,22,4)
,但这将有助于单个字符串,我想使用一些独特的解决方案获得结果。

还有一个选项:

SELECT *, REPLACE(SUBSTRING(Name, CHARINDEX('(', Name) + 1, LEN(Name)), ')', '')
FROM dbo.test136
这就省去了一个
CHARINDEX
调用(搜索结束的
),前提是您的
名称
值在括号中的部分之后从不包含任何内容。如果有,请使用其他建议。

试试这个-

SELECT  SUBSTRING(Name,
        CHARINDEX('(', Name) + 1,
        CHARINDEX(')', Name) - CHARINDEX('(', Name) - 1)
DECLARE @temp TABLE (st NVARCHAR(50))

INSERT INTO @temp (st)
VALUES 
     ('001 BASI Distributor (EXAM)'),
     ('002 BASI Supplier (EXAM2)'),
     ('MASI DISTRIBUTOR (EXAM002)'),
     ('MASI SUPPLIER (EXAM003)'),
     ('EXAM_ND Distributor Success System Test (EXAM_ND)'),
     ('EXAM_SS Supplier Success System Test (EXAM_SS)')

SELECT SUBSTRING(
     st, 
     CHARINDEX('(', st) + 1, 
     CHARINDEX(')', st) - CHARINDEX('(', st) - 1
)
FROM @temp
输出-

-------------
EXAM
EXAM2
EXAM002
EXAM003
EXAM_ND
EXAM_SS
请尝试:

SELECT 
    REPLACE(SUBSTRING(Name, PATINDEX('%(%', Name)+1, LEN(Name)), ')', '')
FROM 
    YourTable

谢谢你@Devart它帮助了我:)欢迎。。谢谢@Devart:)谢谢你,同志。遗憾的是,没有足够的时间投票@techdo-answer。