表格中的列包含以下标准文本:
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
答案 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)
)