开发者社区> 问答> 正文

如果字段中有多个括号,如何在SQL中使用SUBSTRING和CHARINDEX仅返回括号中包含的字段

我有一列包含varchar数据的数据,并且我一直在尝试使用CHARINDEX和SUBSTRING仅返回括号中包含的部分:

列数据:“这是(示例)”

我使用以下代码从上述数据中返回“示例”:

SELECT SUBSTRING (column,  CHARINDEX('(', column)+1 ,   CHARINDEX(')', column)- CHARINDEX('(', column)-1 )

这很好用,但是在某些情况下,字段中的数据在两个括号之间多次出现:

-“这(是)(示例)”

这意味着我上面的代码返回“ is”。在我的数据中,我想返回的是最右边的括号中的数据:

“这是一个(示例)” -我想返回“示例” “这个(是)一些(文本)” -我想返回“文本” “这个(绝对)是(不是)(数字)” -我想返回“数字”

展开
收起
祖安文状元 2020-01-03 16:03:51 822 0
1 条回答
写回答
取消 提交回答
  • 这也是一种方法:这是演示

    select reverse(
              substring(
                 reverse(str_col)
                 , CHARINDEX(')', reverse(str_col))+1
                 , CHARINDEX('(', reverse(str_col))-2 
              )
           )
    from test;
    
    2020-01-03 16:04:06
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载