我在 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
列等
谢谢
我在 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
列等
谢谢
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
我知道你已经接受了一个很好的答案。这是另一种方式。相同的功能用于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