sql >> Base de Datos >  >> RDS >> Database

Cómo usar REEMPLAZAR en SQL

Al consultar datos con SQL, la necesidad de manipular los resultados basados ​​en cadenas es muy común. Hay muchas opciones en los principales sistemas de bases de datos relacionales para esta tarea. En este artículo, discutiremos el caso de uso y la funcionalidad de la función REEMPLAZAR SQL.

Primeros pasos con REPLACE

La funcionalidad BUSCAR y REEMPLAZAR es bien conocida por todos, ya que viene con cualquier editor de texto. ANSI SQL ofrece la funcionalidad REEMPLAZAR en forma de una función de sistema integrada. En este artículo, usaré SQL Server como mi RDMS preferido.

REMPLAZAR Parámetros de función

REEMPLAZAR (expresión_cadena, patrón_cadena, reemplazo_cadena)

Expresión_de_cadena es una cadena que se transformará, puede ser una sola cadena o una columna de una consulta SQL entrante.

Patrón_de_cadena es un patrón de búsqueda que se aplica a la expresión de cadena que se va a reemplazar.

Reemplazo_de_cadenas es un valor de reemplazo que se aplica a la cadena cuando el patrón_cadena coincide con la string_expression .

Echemos un vistazo a varios ejemplos para comprender mejor la funcionalidad REEMPLAZAR.

Creación de datos de muestra

Para este ejemplo, crearé una tabla temporal para ser utilizado con la función REEMPLAZAR. Los nombres de las columnas coincidirán con los valores de los parámetros de la función.


IF OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IS NOT NULL
DROP TABLE #TEMP_REPLACE_DEMO


CREATE TABLE #TEMP_REPLACE_DEMO
(
ID INT IDENTITY(1,1),
STRING_EXPRESSION VARCHAR(2000),
STRING_PATTERN VARCHAR(200),
STRING_REPLACEMENT VARCHAR(200)
)

--REPLACE THE VALUE CAR WITH FOX
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('The red car is the fastest car in the race.','car','fox')

--REPLACE THE VALUE 4 WITH 8
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('There are 4 model ford cars in the parking lot.','4','8')

--REMOVE THE BLANK SPACE CHARACTER
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('    This sentence    has     irregular spacing              .       ',' ','')

REPLACE simple y dinámico Ejemplos

Ahora que la tabla está cargada con algunos datos de muestra, examinemos cómo REPLACE La función se puede aplicar a los datos en un nivel básico y luego en una capacidad más dinámica.

En el primer ejemplo, los parámetros están codificados como valores de cadena para la función.

--REPLACE THE VALUE CAR WITH FOX
SELECT REPLACE('The red car is the fastest car in the race.','car','fox') AS RESULT_FOR_SENTENCE

Los valores también se pueden leer de la tabla de forma dinámica. En este caso, la expresión, el patrón y los valores de reemplazo se leen directamente de la tabla en lugar de codificarse de forma rígida.

--DYNAMIC EXAMPLE FOR ALL COLUMNS IN THE TABLE.
SELECT ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) AS RESULT_FOR_TABLE
FROM #TEMP_REPLACE_DEMO

Los resultados para ID 1 son los mismos que en el ejemplo anterior, la única diferencia es que los valores se leyeron de las columnas individuales.

Reemplazos anidados

La función REEMPLAZAR también se puede utilizar en una capacidad anidada. Esto significa que los resultados de la función REEMPLAZAR interna pueden convertirse en el parámetro STRING_EXPRESSION de la función de reemplazo externa.

Estos son algunos ejemplos de este patrón en los datos de muestra:

--REPLACE THE VALUE CAR WITH FOX | REPLACE THE VALUE "fastest" WITH "slowest"
SELECT REPLACE(REPLACE('The red car is the fastest car in the race.','car','fox'),'fastest','slowest')


--REMOVE THE BLANK SPACE CHARACTER | REPLACE THE VALUE "irregular" with "no"
SELECT REPLACE(REPLACE('    This sentence    has     irregular spacing              .       ',' ',''),'irregular','NO')

Recopilación y REPLACE en SQL

La intercalación es un factor importante a tener en cuenta cuando se trabaja con datos de cadena y la función REEMPLAZAR. La intercalación se puede configurar en varios niveles de una base de datos, como un nivel de cuenta o instancia, el nivel de base de datos, esquema, sesión o tabla. Esta configuración puede afectar el funcionamiento de la función REEMPLAZAR.

En este ejemplo, no puede esperar que la A mayúscula se reemplace con la b minúscula. Pero depende de la intercalación que se hereda de la conexión actual a la base de datos.

--REPLACEMENT WITHOUT EXPLICIT COLLATION.
SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION

Este resultado coincide con A debido a la intercalación.

La configuración de intercalación en SQL Server se puede verificar en el nivel del servidor:

--VIEW CURRENT COLLATION
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation')); 
 

La clave aquí es el CI que significa mayúsculas y minúsculas. Para aplicar la función REEMPLAZAR en una capacidad que distingue entre mayúsculas y minúsculas, el parámetro expresión_cadena se puede cotejar explícitamente.

-- USE COLLATE TO MATCH CHARACTER CASING FOR REPLACE
SELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') as Explicit_Collation;

En este ejemplo, debido a que el parámetro expresión_cadena se clasifica con distinción entre mayúsculas y minúsculas, la función REEMPLAZAR no reemplaza el valor original.

Resumen

La función REEMPLAZAR es una gran herramienta para la manipulación de cadenas básica y avanzada en múltiples sistemas de bases de datos relacionales. Este artículo examinó la aplicación básica de la función REEMPLAZAR, cómo usarla en una capacidad dinámica. También discutimos el uso de REPLACE como una función anidada y cómo la intercalación puede afectar los resultados que devuelve.