在括号中拉最右边的字符串

时间:2017-04-21 17:31:00

标签: sql sql-server

我的数据看起来像这样

(456)
(DEF)
(WXYz)

我希望从RIGHTMOST括号中拉出字符串。结果看起来像这样

{{1}}

括号内的整个字符串和字符串可以有所不同。它是substring和charindex的一些组合,但我无法弄明白。

3 个答案:

答案 0 :(得分:1)

这样的问题表明数据结构存在问题 - 字符串实际上由多个项组成。但是,有时这种字符串处理是必要的。

假设括号内的组件始终存在,以下方法应该有效:

select t.*, colparen
from t cross apply
     (values (right(col, charindex('(', reverse(col)) - 1)) v(colr) cross apply
     (values (charindex(colr, charindex(')', col) + 1)) v(colparen)

答案 1 :(得分:0)

自2016年起,您可以将 String_Split() Cross Apply 结合使用。

注意:如果没有观察结果并且您想显示空值,请使用外部应用。

示例

MinHeight

<强>返回

SizeToContent = "WidthAndHeight"

<强> dbFiddle

答案 2 :(得分:0)

select REVERSE(substring(reverse('ABCD.(123).(456)'),CHARINDEX(')',reverse('ABCD.(123).(456)')),CHARINDEX('(',reverse('ABCD.(123).(456)')))) 

这可以让你得到你想要的东西