选择子串SQL

Ren*_*ene 8 sql sql-server select substring

我需要选择在()之间找到的子字符串.起始位置和结束位置以及子字符串的长度会有所不同.我在以下方面取得了一定的成功,但不是100%.

它适用于某些值但不适用于其他值,它会返回空白并且还会更改值大写格式,换句话说,如果值为'TEST',它将显示为'Test'.

SELECT SUBSTRING(columnName, CHARINDEX('(', LEN(columnName)),
CHARINDEX(')', columnName) - CHARINDEX('(',columnName)) AS INPUT
FROM tableName
Run Code Online (Sandbox Code Playgroud)

更新只有一组括号()

Dav*_*idG 6

如果您只有一次出现(并且):

SELECT 
    SUBSTRING(columnName, 
              CHARINDEX('(', columnName)+1, 
              CHARINDEX(')', columnName) - CHARINDEX('(', columnName)-1)
FROM tableName
Run Code Online (Sandbox Code Playgroud)

如果您的值没有任何(...)内容,请添加以下where子句:

WHERE    CHARINDEX('(', columnName) > 0 AND 
         CHARINDEX(')', columnName) > CHARINDEX('(', columnName)
Run Code Online (Sandbox Code Playgroud)