繁体   English   中英

括号之间的最后一场比赛

[英]Getting last match between brackets

Company 1 [CRM] - Hong Kong - [10003086] (57464)
Company 2  [SHP] Shanghai - [10003086] (12532)

我试图从字符串中提取括号之间的第二次出现。 我试过的

SELECT
SUBSTRING(myid,CHARINDEX('(',myid)+1,(CHARINDEX(')',myid)-CHARINDEX('(',myid))-1) AS ID
FROM dbo.CRM

对于第一条记录,它返回我想要的数字“ 10003086”。 对于第二条记录,它返回“ [SHP]”。 如何确保查询始终返回最后找到的结果?

试试这个

DECLARE @str     VARCHAR(100)= 'Company 1 [CRM] - Hong Kong - [10003086] (57464)',
        @fst_pos INT,
        @lst_pos INT

SELECT @fst_pos = Charindex('[', @str),
       @lst_pos = Charindex(']', @str)

SELECT Substring(@str, Charindex('[', @str, @fst_pos+1) + 1, Charindex(']', @str, @lst_pos + 1) - Charindex('[', @str, @fst_pos + 1) - 1) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM