【问题标题】:Extract Value from Column in SQL从 SQL 中的列中提取值
【发布时间】:2015-05-20 06:39:09
【问题描述】:

我有一个数据库,其中表中的特定列的值带有类型为 (varchar(128),null) 的大括号 {789-uiuiun-990..}。

有没有办法编写一个查询,通过删除那些大括号给我结果。

i.e. select col from db ; ---> results with braces

如何修改它以仅提取值并删除大括号。

谢谢

【问题讨论】:

  • 尝试Select LEFT(RIGHT(col, len(col)-1),len(col)-2) from db 期望大括号始终是第一个和最后一个字符
  • 你能解释一下吗?表示此查询将如何给出预期结果?
  • @RahulParit 只是删除了大括号的列。

标签: c# sql database sql-server-2012


【解决方案1】:

尝试使用左右函数来剪切首尾字符

Select LEFT(RIGHT(col, len(col)-1),len(col)-2) from db

也可以使用 substring + len 函数来实现,如下所示

Select substring(col,2,(LEN(col)-2)) from db

【讨论】:

    【解决方案2】:

    使用 SQL REPLACE 函数将所有大括号替换为空格。

    删除它的代码示例

    Declare @var varchar(100) = '{this is a value}'
    
    Select REPLACE(REPLACE(@var,'{',''), '}','')
    

    你的价值:

    Select REPLACE(REPLACE(col,'{',''), '}','') from db
    

    【讨论】:

      【解决方案3】:
      declare @S varchar(128)
      set @S='{789-uiuiun-990..5567}'
      select substring (@s,2,LEN(@s)-2)
      

      【讨论】:

        【解决方案4】:

        使用substring:

        SELECT SUBSTRING(col, 2, LEN(col) - 2) AS 'col' FROM db
        

        一般来说,您可以在这里找到解决此类问题的方法:docs

        【讨论】:

          猜你喜欢
          • 2020-09-21
          • 2021-10-05
          • 1970-01-01
          • 2021-07-25
          • 1970-01-01
          • 2023-04-02
          • 2021-06-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多