0

我的字符串看起来像:

set @s1 = '#12 + #13 - #14 * 3'

如何找到字符串的所有 #XXX 部分并将其替换为最终字符串如下所示:

hashf('12') + hashf('13') - hash('14') * 3 

我尝试使用游标,但我花了太多时间,出于性能原因,我不想使用它们。

我也试过了regex。模式是"#\d+",但我如何在我的情况下应用它?

4

1 回答 1

0

我想出了解决方案:

DECLARE @s1 VARCHAR(max) 
DECLARE @length INT 
DECLARE @current INT 

SET @s1 = '#12 + #13 - #14 * 3' 
SET @length = Len(@s1) 
SET @current = 0 

DECLARE @returned_value VARCHAR(max) 

WHILE ( @current < @length ) 
  BEGIN 
      SET @current = Charindex('#', @s1, @current) 
      SET @s1 = Stuff(@s1, Charindex('#', @s1, @current) , 1, 'func1(''') 
      SET @s1 = Stuff(@s1, Charindex(' ', @s1, @current) , 1, ''') ') 
      SET @length = Len(@s1) 
      SET @current = Charindex('#', @s1, @current) 

      IF @current = 0 
        BEGIN 
            SET @current = @length 
        END
  END
SELECT @s1
于 2013-05-13T17:51:12.807 回答