Los editores de código y los procesadores de texto actuales vienen con una función de búsqueda y reemplazo. Es útil cuando necesita cambiar una palabra o un grupo de palabras. No queremos tirar nuestro trabajo escrito por un problema o cambio menor.
Lo mismo se aplica a nuestros datos. Los usuarios nos maldecirán si les decimos que editen lo que necesita ser renombrado. Es por eso que también está disponible una función de búsqueda y reemplazo para reemplazar textos escritos en nuestras bases de datos. Aquí entra el comando REEMPLAZAR en SQL.
La sintaxis de REEMPLAZAR en SQL es la siguiente:
REEMPLAZAR (
Tenga en cuenta que todos los parámetros son obligatorios. La
Pero puede haber algunas advertencias. De esta manera, puede averiguar cómo evitar reemplazar las palabras incorrectas o cómo evitar insertar registros duplicados en el servidor SQL. O, tal vez, no reemplazar las palabras adecuadas. Luego estropear sus datos al final.
¿Eres nuevo en SQL REPLACE? Aquí hay una hoja de trucos GRATIS para usted. Simplemente ingrese su dirección de correo electrónico a continuación y lo enviaremos directamente a su bandeja de entrada.
¿Suena bien? Profundicemos.
[ID de formulario de envío de pulso =”12251″]
1. SQL REPLACE reemplaza el texto para TODAS las ocurrencias
Así es. Barre todo el texto con la cadena que desea buscar. Déjame mostrártelo y explicarte el problema. Eche un vistazo al siguiente ejemplo:
SELECT REPLACE('know the unknown','know','seek');
-- OUTPUT: 'seek the unseekn. Surprise!
El saber la cadena existe dos veces, en las palabras saber y no saber norte. Si no tiene cuidado, los errores de ortografía se infiltrarán en sus datos. En su lugar, puede agregar espacio para buscar solo palabras completas. Aquí está el código modificado:
SELECT REPLACE('know the unknown','know ','seek ');
-- OUTPUT: 'seek the unknown'.
¿Mucho mejor? Puede haber otros escenarios, pero entiendes el punto.
2. SQL REPLACE puede eliminar textos
¿Has intentado reemplazar una palabra con nada en un editor de texto? ¿O tal vez desea eliminar duplicados en SQL? También sucede en SQL REPLACE. He aquí un ejemplo:
USE AdventureWorks
GO
SELECT
EmailAddress
,REPLACE(EmailAddress,'-','') AS NewEmailAddress
FROM person.EmailAddress;
La primera columna contiene el nombre de dominio de la dirección de correo electrónico original. El segundo elimina el guión del nombre de dominio original. Vea la captura de pantalla a continuación:
Si necesita eliminar uno o más caracteres de la cadena original, use una cadena SQL vacía como reemplazo. También puede eliminar registros duplicados en SQL de esta manera.
3. La intercalación afecta los resultados de SQL REPLACE
Cuando instala un servidor SQL, se utiliza una intercalación predeterminada. A su vez, esto será utilizado por sus bases de datos y columnas de tablas. La figura 2 muestra el que yo uso:
En mi computadora portátil, uso SQL_Latin1_CP1_CI_AS . Es una colación que no distingue entre mayúsculas y minúsculas. (Ver también CI en el nombre de colación para c ase yo sensible). Por lo tanto, las palabras Perro , perro , PERRO y perro serán tratados de la misma manera.
Probémoslo en acción:
DECLARE @string VARCHAR(200) = 'Cats are great pets
and so easy to take care of. They make good companions.
Having a cat around is good for children.';
SELECT REPLACE(@string,'cat','dog');
Y el resultado es:
La función REEMPLAZAR encontró la palabra Gato en Gato s en la primera frase y la palabra gato en la última oración. Es irrelevante si las letras son mayúsculas o minúsculas.
Sin embargo, si forzamos un cambio en la intercalación a una que distinga entre mayúsculas y minúsculas dentro de REEMPLAZAR, ¿qué sucederá? Aquí está el código que usa COLLATE dentro de REPLACE:
DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';
-- force a change to a case-sensitive collation. '_CS_' for case-sensitive
SELECT REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog');
Y aquí está el resultado:
Ahora verá cómo la intercalación afecta el resultado. Gato y gato ahora son tratados de manera diferente. El párrafo se vuelve confuso. Entonces, la lección es usar la intercalación con precaución.
4. Puede anidar SQL REEMPLAZAR
Puede reemplazar las palabras que ya reemplazó anidando la función REEMPLAZAR. He aquí un ejemplo:
USE AdventureWorks
GO
SELECT
definition
,REPLACE(REPLACE(definition,'CREATE PROCEDURE','ALTER PROCEDURE'),'BusinessEntityID','BusinessEntityNo')
FROM sys.sql_modules a
INNER JOIN sys.objects b ON a.object_id = b.object_id
WHERE a.definition LIKE '%BusinessEntityID%'
AND b.type = 'P';
El ejemplo anterior usó un REEMPLAZO dentro de un REEMPLAZO. Eso es cambiar CREAR PROCEDIMIENTO para CAMBIAR EL PROCEDIMIENTO luego ID de entidad comercial a BusinessEntityNo .
La consulta afectará a los procedimientos almacenados que usaron el BusinessEntityID columna. Esto es útil cuando desea cambiar el nombre de una columna en una tabla y reemplazar el código de la base de datos afectada. Los parámetros del procedimiento almacenado también se ven afectados, pero puede optar por reemplazarlos para conservar la consistencia de los nombres.
Tenga en cuenta que antes de ejecutar las instrucciones ALTER, debe verificar los cambios que se aplicarán. No querrás estropear las cosas, ¿verdad?
Mientras tanto, anidar REPLACE también puede solucionar el problema que tuvimos anteriormente en gatos y perros . Aquí está la solución:
DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';
SELECT REPLACE(REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog') COLLATE SQL_Latin1_General_CP1_CS_AS,'Cat','Dog');
Mira el nuevo resultado:
Observe también que el problema de capitalización en la Figura 3 también está solucionado.
5. Usar con ACTUALIZAR para almacenar textos reemplazados
Hasta ahora, solo hemos usado SQL REPLACE con una consulta SELECT. Esto solo nos permitirá ver la salida de REEMPLAZAR. Para almacenar su salida, también debe emitir una ACTUALIZACIÓN. He aquí un ejemplo:
USE AdventureWorks
GO
UPDATE Person.EmailAddress
SET EmailAddress= REPLACE(EmailAddress,'-','');
Aquí hay otro ejemplo que usa MySQL que involucra blog_posts tabla en WordPress. Vea cómo puede reemplazar una URL privada por una pública:
-- View the possible results
SELECT
guid
,REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net') AS NewGUID
FROM blog_posts
WHERE post_date > '2020-10-01';
-- Update the blog_posts table by replacing localhost with a fictitious URL
UPDATE blog_posts
set guid = REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net')
WHERE post_date > '2020-10-01';
El conjunto de resultados de la primera declaración anterior se puede ver a continuación usando dbForge Studio para MySQL:
Conclusión
Hasta aquí todo bien. Viste lo que REEMPLAZAR en SQL puede hacer en acción. Puede dar ideas cuando necesite cambiar direcciones de correo electrónico y URL. si cambia el nombre de una columna en una tabla utilizada en un procedimiento almacenado, vista o sinónimo.
Hagamos un resumen:
- SQL REPLACE puede reemplazar texto para TODAS las apariciones.
- También puede eliminar una parte del texto.
- La configuración de intercalación puede afectar la salida de REPLACE.
- Puede anidar el uso de SQL REPLACE.
- Finalmente, use ACTUALIZAR para almacenar los textos reemplazados.
Si te gusta esta publicación, compártela en tus redes sociales favoritas. Háganos saber también lo que piensa en la sección de comentarios a continuación.