选择()括号之间的列数据

时间:2013-06-12 07:34:10

标签: sql sql-server

我在SQL服务器数据库列中有如下数据:

Column

Ot ntri - Non Cash - (6932)
Otr Contri- Cash - (6930)
anth C-Cash - (6935)
Phil Cor-Non Cash - (6937)
Poll Conh - (6940)

我需要一个查询来选择仅与parantheses()一起出现的数据。

请帮助:

我只需要选择

6932
6930
6935 
列的

由于

2 个答案:

答案 0 :(得分:2)

SUBSTRING和CHARINDEX的组合可以为您做到这一点:

SELECT  * ,
    REVERSE(t.[Column]) AS Reversed ,
    CASE WHEN t.[Column] LIKE '%(%'
              AND t.[Column] LIKE '%)%'
         THEN REVERSE(SUBSTRING(REVERSE(t.[Column]),
                                CHARINDEX(')', REVERSE(t.[Column])) + 1,
                                CHARINDEX('(', REVERSE(t.[Column]))
                                - CHARINDEX(')', REVERSE(t.[Column])) - 1))
         ELSE NULL
    END AS result
FROM    dbo.[Table] AS t

答案 1 :(得分:2)

我知道你已经接受了一个很好的答案。这是另一种方式。 CTE使用相同的函数:

SQL server 2008 fiddle example将字符串放在最后一个括号中。

;with cte as (
 select col, charindex(')',reverse(col),1) brk1,
        charindex('(',reverse(col),1) brk2
 from t
)
select col, reverse(substring(reverse(col),brk1+1,brk2-brk1-1)) mystr
from cte