sql - 获取括号内的文本

sql - getting text between parentheses

我有这样的文字:

San Demetrio Corone (CS)
Villanova Tulo (NU)

我需要获取括号之间的文本,我这样做了

SELECT SUBSTRING(a.place, CHARINDEX('(', a.place) + 1, CHARINDEX(')', a.place, CHARINDEX('(', a.place)+ 1)  - CHARINDEX(')', a.place) - 1)
FROM tab1 a

但是我收到关于长度参数的错误,这是怎么回事?

您对 SUBSTRING 的长度输入已关闭。长度应该是右括号和左括号之间的位置差,减一。

SELECT
    place,
    SUBSTRING(place,
              CHARINDEX('(', place) + 1,
              CHARINDEX(')', place) - CHARINDEX('(', place) - 1) AS abbr
FROM tab1;

演示