9
Supongamos que tenemos un campo con un texto y lo recuperamos con una consulta SQL. Supongamos también que queremos cambiar parte del contenido de ese texto y reemplazarlo por otro, en este caso realizaríamos un replace por código (programación), pero y si esto no nos vale, y si necesitamos que sea por consulta todo. Para estos casos existe una funcion REPLACE que se ejecuta en SQL y es similar a la de la mayoría de lenguajes de programación.
La llamada a la función de reemplazo (REPLACE) se usara dentro de cualquier código SQL o TSQL en SQL Server. La función REPLACE tiene 3 parámetros, el texto original completo, el texto que se quiere buscar y por último el texto por el que se quiere sustituir como se hace en muchos lengaujes de programación.
La sintaxis sería:
REPLACE(TEXTO, BUSCADA, SUSTITUIDA)
Un ejemplo de como se incrustaría el reemplazo en una consulta SQL sería:
SELECT REPLACE(campo, 'a', 'b') FROM tabla
Aqui nos encontramos con el primer de los dos grandes problemas de reemplazar texto con esta función. El primer problema son los campos de tipo TEXT, que al parecer, para SQL Server son objetos diferentes que los campos de tipo CHAR o VARCHAR y para poder reemplazar un campo de tipo TEXT necesitamos hacer un pequeño HACK que nos convierta de tipo TEXT a tipo STRING como si de un VARCHAR se tratase.
El Hack en cuestion se trata de hacer un SUBSTRING desde la primera posición de la cadena hasta la última utilizando la longitud de la misma obtenida con la funcion DATALENGTH. De esta forma, con el SUBSTRING convertimos el tipo TEXT en un tipo STRING o VARCHAR y asi podemos reemplazar.
Un ejemplo seria:
SELECT REPLACE( SUBSTRING(campo, 1, DATALENGTH(campo)), 'a', 'b') FROM tabla
Y es aquí cuando nos encontramos con el segundo y mayor de los problemas y es la longitud de la cadena. Cuando trabajamos con una cadena de texto realmente larga, como podría ser una página web, el SUBSTRING o el REPLACE no devuelve la cadena completa, por lo que se nos cortara la respuesta y obtendremos solo parte del texto original, eso si, ya reemplazado.
Excelente idea lo del replace para los campos tipo text.
Eres un crack!!!
Gracias.
[...] public links >> reemplazar Reemplazar un texto en SQL Server con TSQL Saved by kie on Wed 08-10-2008 Como reemplazar texto de un documento usando JavaScript y … [...]
Saludos
Tengo un problemita con una base dadtos, sucede que en mi base de datos tengo unos campos que se encuentran vacios, es decir ‘NULL’, el problema se da en que cuando trato de hacer consultas desde un aplicativo me da errores tener campos en blanco, como puedo reemplazar estos campos en blanco por un valor cualquiera que yo desee introcudir, desde luego gracias por las posibles respuestas.
Seria cuestion de ver la consulta pero sin saber lo que haces exactamente, es posible que desde el programa estes tratando los campos como un objeto por ejemplo String, pero al ser valores NULL, quizas la aplicacion no este iniciliazando los objetos String teniendo un valor null o Nothing en su interior y al querer acceder a alguna propiedad de objeto es cuando viene el reventon.