代码之家  ›  专栏  ›  技术社区  ›  JeffO

替换select语句中的多个实例

  •  4
  • JeffO  · 技术社区  · 15 年前

    我想用“Times New Roman”替换任何字体名称

    我可以使用(textlong1是字段)获取第一个:

     Select Replace(textlong1, 
            CASE When CharIndex(';',textlong1)> 10 Then
            SubString(textlong1
            , Charindex('fcharset',textlong1)+10
            , CharIndex(';',textlong1) - Charindex('fcharset',textlong1)-10) 
            Else '' End
            , 'Times New Roman') From exampletable
    

    因为我没有替换“fcharset”,即使我循环,它也找不到第二个实例(总是卡在第一个实例上)。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Alex Martelli    15 年前

    如果您可以集成.NET CLR功能(MSDN有许多这样做的示例),那么您可以使用regex替换并使任务变得非常简单。

        2
  •  1
  •   Andomar    15 年前

    如果你能换第一个,就一直换到没有第一个为止。如果您正在进行更新:

    declare @done bit
    while @done <> 1
        begin
        UPDATE ...
        if @@rowcount = 0 set done = 1
        end
    

    或选择一个新变量:

    declare @cur varchar(4000)
    declare @next varchar(4000)
    set @cur = 'The string to operate on'
    set @next = ''
    while @cur <> @next
        begin
        set @next = @cur
        select @cur = REPLACE(@next,...)
        end
    

        3
  •  0
  •   abatishchev Marc Gravell    14 年前

    您可以始终使用分隔符过程来打断字体列表实例周围的字符串,并将其替换为times new roman。