从varchar数据类型的某些部分删除字符

时间:2017-01-18 07:57:08

标签: select sql-server-2012

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







ro






  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
  • &#xA; < li> 10,89 &#xA;
  • 10,89
  • &#xA;
&#xA;&#xA;

我尝试使用charindex和substring and right然后离开但我没有得到正确的结果。&#xA;感谢您的帮助!

&#xA;

1 个答案:

答案 0 :(得分:0)

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