替换一个单词(它出现两次)我需要替换最后一个。 SQL

时间:2012-04-26 20:49:49

标签: sql performance sql-server-2005 replace

他们是我的行

Número Total de Clientes
Número Total de Clientes de
Número Total de Líquidos que se Consumen en el Hogar a la Semana
Número Total de Líquidos que se Consumen en el Hogar a la Semana de
Número Total de garrafones de
Número Total de garrafones en el mercado
Númeto Total de garrafones de
Porcentaje Clientes que Compran por Calidad
Porcentaje Clientes que Compran por Disponibilidad
Porcentaje Clientesque Compran por Otros Motivos
Porcentaje Clientesque Compran por Precio
Porcentaje Total de garrafones de
Porcentaje de Clientes
Porcentaje de Clientes xxxx que Compran en la Ruta Hogar
Porcentaje de Clientes de
Porcentaje de Participación de Ventas de
Porcentaje de garrafones de

我的桌子名为#ope_censo_indicador

你可以看到我有那些

Número Total de Clientes
Número Total de Clientes de

我需要它     NúmeroTotalde Clientes marca

但是我得到了     NúmeroTotalde Clientes     NúmeroTotalmarcaClientes marca

使用此查询

update #ope_censo_indicador set ope_indicadoridname=(replace(ope_indicadoridname,'%de','%marca'))
where ope_indicadoridname like '% de'

还有这些

 Número Total de Líquidos que se Consumen en el Hogar a la Semana
 Número Total de Líquidos que se Consumen en el Hogar a la Semana de

我需要它返回

 Número Total de Líquidos que se Consumen en el Hogar a la Semana
 Número Total de Líquidos que se Consumen en el Hogar a la Semana marca

这也是

Porcentaje de Clientes Porcentaje de Clientes Cristal que Compran en
la Ruta Hogar Porcentaje de Clientes de

我需要回归

 Porcentaje de Clientes Porcentaje de Clientes Cristal que Compran en
 la Ruta Hogar Porcentaje de Clientes marca

(我有更多,但我会用一个查询得到它)

之后,我会的。

Número Total de Clientes
Número Total de Clientes marca
Número Total de Líquidos que se Consumen en el Hogar a la Semana
Número Total de Líquidos que se Consumen en el Hogar a la Semana marca
Número Total de garrafones marca
Número Total de garrafones en el mercado
Porcentaje Clientes que Compran por Calidad
Porcentaje Clientes que Compran por Disponibilidad
Porcentaje Clientesque Compran por Otros Motivos
Porcentaje Clientesque Compran por Precio
Porcentaje Total de garrafones marca
Porcentaje de Clientes
Porcentaje de Clientes xxxx que Compran en la Ruta Hogar
Porcentaje de Clientes marca
Porcentaje de Participación de Ventas marca
Porcentaje de garrafones marca

我想要删除那些(或者使用不同的查询进行查询,但我需要将其返回:)

Número Total de Clientes marca
Número Total de Líquidos que se Consumen en el Hogar a la Semana marca
Número Total de garrafones marca
Número Total de garrafones en el mercado
Porcentaje Clientes que Compran por Calidad
Porcentaje Clientes que Compran por Disponibilidad
Porcentaje Clientesque Compran por Otros Motivos
Porcentaje Clientesque Compran por Precio
Porcentaje Total de garrafones marca
Porcentaje de Clientes xxxx que Compran en la Ruta Hogar
Porcentaje de Clientes marca
Porcentaje de Participación de Ventas marca
Porcentaje de garrafones marca



enter code here

1 个答案:

答案 0 :(得分:0)

这很棘手!我假设你基本上说你要替换最后的" de"与" marca"但只有这是最后一句话。如果它在中间,你想不管它。

如果这是正确的,这段代码会处理它:

-- Setup a temp table with "bigstring" as your text and "lastpos" as the location of LAST "de"
 DECLARE @tmp1 TABLE (bigstring varchar(1000), lastpos int)
 INSERT INTO @tmp1 (bigstring) VALUES ('Número Total de Líquidos que se Consumen en el Hogar a la Semana')
 INSERT INTO @tmp1 (bigstring) VALUES ('Número Total de Líquidos que se Consumen en el Hogar a la Semana de')
 INSERT INTO @tmp1 (bigstring) VALUES ('Leave this de one alone')

  -- Ensure we don't have any trailing spaces
  UPDATE @tmp1 SET bigstring = RTRIM(bigstring)

  -- If the string ENDS in ' de' then record the starting position of that word
  UPDATE @tmp1 SET lastpos = LEN(bigstring)-2 WHERE RIGHT(bigstring,3) = ' de'

  -- Here is how our table looks now
  SELECT * from @tmp1

  -- Now, if LASTPOS is not null, we want everything to the LEFT of that + 'marca'
  UPDATE @tmp1 SET bigstring = SUBSTRING(bigstring, 1, lastpos) + 'marca' WHERE lastpos IS NOT NULL

  -- Done!
  SELECT * from @tmp1

你的第一个字符串是独自留下的,第二个字符串是最终的" de"替换为" marca"我放在那里的那个(#34; de"在中间)是独自留下的。

我希望有所帮助!