T-SQL:一个字符串提取部
问题描述:
在表中的列包含一个标准文本等如下:T-SQL:一个字符串提取部
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
答
使用SUBSTRING()
功能如下CHARINDEX()
功能:
SELECT SUBSTRING(<Column>, CHARINDEX('(', <Column>)+1, CHARINDEX(')', <Column>)-CHARINDEX('(', <Column>)-1);
输出:
12345
注意:这会给你(
和)
答
这里有一个方法:
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。
答
之间的所有字符串/数字
试试这个:
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)
)
TNX,而是抛出一个错误传递给LEFT或SUBSTRING function' – DeepDiver
TNX再次'无效的长度参数,这正是我所做的,试图查询添加到我原来的问题。 – DeepDiver
@DeDDiver我认为你的列不包含数据()。 –