[英]Extract right string between last two parentheses
对于您的样本数据,这应该做您想要的:
select replace(right(name, charindex('(', reverse(name) + '(') - 1), ')', '')
由于ID
始终是最后一个
SELECT *,
REPLACE(RIGHT(Str, CHARINDEX('(', REVERSE(Str)) - 1), ')', '')
FROM (
VALUES ('Smith, Donald R.(Don) (NBK1234)'),
('Rogers, Bob (A1234457)'),
('Rogers, Bob (A1234457)(A1B2)')
) T(Str);
返回值:
+---------------------------------+----------+
| Str | ID |
+---------------------------------+----------+
| Smith, Donald R.(Don) (NBK1234) | NBK1234 |
| Rogers, Bob (A1234457) | A1234457 |
| Rogers, Bob (A1234457)(A1B2) | A1B2 |
+---------------------------------+----------+
如果您要提取的ID
并非总是以结尾,而是唯一的字符串始终是数字,则
SELECT *,
REPLACE(REVERSE(REPLACE(SUBSTRING(REVERSE(Str),PATINDEX('%[0-9]%', REVERSE(Str)), CHARINDEX('(', REVERSE(Str))-1), '(', '')), ' ', '')
FROM (
VALUES ('Smith, Donald R.(Don) (NBK1234)'),
('Rogers, Bob (A1234457)'),
('Rogers, Bob (A1234457)(not an id)')
) T(Str);
返回值:
+-----------------------------------+----------+
| Str | ID |
+-----------------------------------+----------+
| Smith, Donald R.(Don) (NBK1234) | NBK1234 |
| Rogers, Bob (A1234457) | A1234457 |
| Rogers, Bob (A1234457)(not an id) | A1234457 |
+-----------------------------------+----------+
在现场演示中查看其工作方式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.