【问题标题】:Delete characters from certain parts of varchar datatype从 varchar 数据类型的某些部分删除字符
【发布时间】:2017-06-02 12:16:33
【问题描述】:

我的表中有如下值。此列名称是

N3195 (T132 / RL / TB / tgh 44,373 - 1,994)
N13 (T13 / RL / TB / tgh 0 - 12,586)
N9 (T129 / L / V / tgh 10,89 - 21,96)
31 (T129 / RL / WV / tgh 10,89 - 21,796)

在 select 语句之后,我只想保留 'tgh' 之后和字符 '-' 之前的数字。最终结果必须没有空格。所以从上面的代码:

  • 44,373
  • 0
  • 10,89
  • 10,89

我尝试使用 charindex 和 substring 以及 right 和 left,但我没有得到正确的结果。 感谢您的帮助!

【问题讨论】:

    标签: select sql-server-2012


    【解决方案1】:

    SQL Server 不会让您对此类搜索进行太多控制。这是一个如何解决此问题的示例。这是一个固定的解决方案,对于某些与您提供的字符串不同的字符串可能会失败:

    DECLARE @t TABLE ( ro NVARCHAR(MAX) )
    INSERT  INTO @t
    VALUES  ( 'N3195 (T132 / RL / TB / tgh 44,373 - 1,994)' ),
            ( 'N13 (T13 / RL / TB / tgh 0 - 12,586)' ),
            ( 'N9 (T129 / L / V / tgh 10,89 - 21,96)' ),
            ( '31 (T129 / RL / WV / tgh 10,89 - 21,796)' )
    
    
    SELECT *, REPLACE(SUBSTRING(ro, 
                                CHARINDEX('tgh', ro) + 3, 
                                CHARINDEX('-', ro) - CHARINDEX('tgh', ro) - 3), ' ', '') 
    FROM @t
    

    【讨论】:

    • 我不明白你的意思。
    • 我不确定你为什么会得到这个结果。你做错了什么。我得到了正确的结果。你能做一个打印屏幕,这样我就可以看到你的选择是什么样的以及输出是什么样的?
    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 2017-07-24
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多