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

Select 从varchar数据类型的某些部分删除字符,select,sql-server-2012,Select,Sql Server 2012,我的表中有如下值。此列名为 反渗透 在select语句之后,我只希望te将数字保留在“tgh”之后和字符“-”之前。最终结果必须没有空格。因此,根据上述代码: 44373 0 10,89 10,89 我尝试使用charindex和substring以及right和left,但没有得到正确的结果。 谢谢你的帮助 SQL Serverdos无法为这种类型的搜索提供太多控制。这是一个你如何解决这个问题的例子。这是一个固定的解决方案,对于某些与您提供的字符串不同的字符串可能会失败: DECLARE

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

反渗透

在select语句之后,我只希望te将数字保留在“tgh”之后和字符“-”之前。最终结果必须没有空格。因此,根据上述代码:

  • 44373
  • 0
  • 10,89
  • 10,89
我尝试使用charindex和substring以及right和left,但没有得到正确的结果。
谢谢你的帮助

SQL Server
dos无法为这种类型的搜索提供太多控制。这是一个你如何解决这个问题的例子。这是一个固定的解决方案,对于某些与您提供的字符串不同的字符串可能会失败:

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

我不明白你的意思。我不知道你为什么会得到那个结果。你做错了什么。我得到了正确的结果。你能做一个打印屏幕让我看到你的选择和输出吗?
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