T-SQL:提取字符串

时间:2017-10-14 12:55:18

标签: sql sql-server sql-server-2008-r2

表格中的列包含以下标准文本:

Variable Length Text (12345) follows more  variable length text again.

我的目标是选择12345,或实际是()之间的数字,也可以是不同长度的数字。 有什么建议吗?

SELECT SUBSTRING(TcSubjectTx_N, CHARINDEX('(', TcSubjectTx_N)+1, CHARINDEX(')', TcSubjectTx_N)-CHARINDEX('(', TcSubjectTx_N)-1)
FROM T_TcTicket
WHERE TcTicketID=78945

3 个答案:

答案 0 :(得分:1)

使用SUBSTRING()功能和CHARINDEX()功能,如下所示:

SELECT SUBSTRING(<Column>, CHARINDEX('(', <Column>)+1, CHARINDEX(')', <Column>)-CHARINDEX('(', <Column>)-1);

输出

12345

注意:这将为您提供()之间的所有字符串/数字

答案 1 :(得分:0)

这是一种方法:

select t.*, v2.exp
from t cross apply
     (values (stuff(t.col, 1, charindex('(', t.col + '('), ''))
     ) v1(exp) cross apply
     (values (left(v1.exp, charindex(')', v1.exp + ')') - 1 ))
     ) v2(exp);

注意:这可以在第一次开启和关闭之间获得所有内容。

Here是rextester。

答案 2 :(得分:0)

试试这个:

DECLARE 
@STRING VARCHAR(MAX)=
'Variable Length Text (12345) follows more  variable length text again.'

SELECT SUBSTRING(@STRING,
             CHARINDEX('(',@STRING)+1,
             (CHARINDEX(')',@STRING)-1)-CHARINDEX('(',@STRING)
                )