Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Reemplazar una cadena tomando un inicio y un fin en SQL

Estas en el tema de Reemplazar una cadena tomando un inicio y un fin en SQL en el foro de SQL Server en Foros del Web. Código: <SPAN STYLE="display:none"> Mucho texto ingresado </SPAN> <!-- texto --> quiero tomar Código: <SPAN STYLE="display:none"> como inicio y Código: --> como final y reemplazar todo ...
  #1 (permalink)  
Antiguo 09/03/2011, 08:01
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Reemplazar una cadena tomando un inicio y un fin en SQL

Código:
<SPAN STYLE="display:none">
Mucho texto ingresado 
</SPAN>
<!--
texto 
-->

quiero tomar


Código:
<SPAN STYLE="display:none">
como inicio y
Código:
-->
como final y reemplazar todo lo que este dentro

ojala se entienda
  #2 (permalink)  
Antiguo 09/03/2011, 08:26
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Reemplazar una cadena tomando un inicio y un fin en SQL

Mira, creo debes hacer un SELECT en tu SQL, luego pasar los registros a una tabla temporal y luego eliminar los registros, la primera parte sería así:


SELECT campo
FROM tabla
WHERE (campo LIKE '<SPAN STYLE="display:none">%') AND (campo LIKE '%</SPAN>')

luego el INSERT Y EL DELETE

prueba primero con registros de prueba.
  #3 (permalink)  
Antiguo 09/03/2011, 09:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Reemplazar una cadena tomando un inicio y un fin en SQL

Prueba con esto :)


Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. dato VARCHAR (MAX)
  3. )
  4.  
  5. INSERT INTO #temp (dato) VALUES ('<SPAN STYLE="display:none">Mucho texto ingresado </SPAN><!--texto -->')
  6.  
  7. SELECT stuff(dato,pos1+long,pos2-long-1,'texto a cambiar') FROM
  8. (
  9. SELECT
  10. patindex('%<SPAN STYLE="display:none">%',dato) pos1, patindex('%-->%',dato)pos2, dato, len('<SPAN STYLE="display:none">') long  
  11. FROM #temp
  12. )t1

Regresa esto:

<SPAN STYLE="display:none">texto a cambiar-->


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 09/03/2011, 09:49
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Reemplazar una cadena tomando un inicio y un fin en SQL

Cita:
Iniciado por Libras Ver Mensaje
Prueba con esto :)


Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. dato VARCHAR (MAX)
  3. )
  4.  
  5. INSERT INTO #temp (dato) VALUES ('<SPAN STYLE="display:none">Mucho texto ingresado </SPAN><!--texto -->')
  6.  
  7. SELECT stuff(dato,pos1+long,pos2-long-1,'texto a cambiar') FROM
  8. (
  9. SELECT
  10. patindex('%<SPAN STYLE="display:none">%',dato) pos1, patindex('%-->%',dato)pos2, dato, len('<SPAN STYLE="display:none">') long  
  11. FROM #temp
  12. )t1

Regresa esto:

<SPAN STYLE="display:none">texto a cambiar-->


Saludos!

me puedes explicar un poco la funcion y los datos que debo reemplazar en ella ?
  #5 (permalink)  
Antiguo 09/03/2011, 12:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Reemplazar una cadena tomando un inicio y un fin en SQL

El codigo que te pase lo que hace crea una tabla temporal(para la prueba) y en esta tabla pone la cadena que quieres remplazar, este select

select
patindex('%<SPAN STYLE="display:none">%',dato) pos1, patindex('%-->%',dato)pos2, dato, len('<SPAN STYLE="display:none">') long
from #temp


saca la posicion en donde inicia la cadena <SPAN STYLE="display:none">(pos1) y la cadena --> (pos2), ademas de que obtiene la longitud de la cadena <SPAN STYLE="display:none"> long

Con estos datos se arma el query completo:

stuff lo que hace es reemplazar una cadena empezando en una posicion con la longitud de caracteres que le indiques y la remplaza un texto a cambiar


select stuff(dato,pos1+long,pos2-long-1,'texto a cambiar') from
(
select
patindex('%<SPAN STYLE="display:none">%',dato) pos1, patindex('%-->%',dato)pos2, dato, len('<SPAN STYLE="display:none">') long
from #temp
)t1



El texto que debes de reemplazar es la cadena 'texto a cambiar'

Espero haberme explicado, saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: inicio, reemplazar, sql, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.