1

我在 SQL Server 数据库列中有如下数据:

Column

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

我需要一个查询来选择仅带有括号()的数据。

请帮忙:

我只需要选择

6932
6930
6935 

列等

谢谢

4

2 回答 2

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
于 2013-06-12T07:44:34.607 回答
2

我知道你已经接受了一个很好的答案。这是另一种方式。相同的功能用于CTE

SQL Server 2008 小提琴示例以获取最后一个括号内的字符串。

;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
于 2013-06-12T10:07:29.653 回答