我在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
列的等
由于
答案 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