En Oracle, el TRIM()
La función le permite recortar caracteres de los lados de una cadena.
Puede recortar los caracteres iniciales, finales o ambos.
De forma predeterminada, recorta los espacios en blanco, pero opcionalmente puede especificar un carácter o caracteres diferentes para recortar.
Sintaxis
La sintaxis es así:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
Ambos trim_character
y trim_source
puede ser VARCHAR2
o cualquier tipo de datos que se pueda convertir implícitamente a VARCHAR2
.
Ejemplo
Aquí hay un ejemplo simple para demostrarlo:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;
Resultado:
TRIM('.'FROM'...CAT...') ___________________________ Cat
En este caso, el carácter especificado (.
) se eliminó de ambos lados de la cuerda.
Se quitó de ambos lados porque no especifiqué de qué lado quitarlo.
Podemos obtener el mismo resultado incluyendo BOTH
palabra clave:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;
Resultado:
TRIM(BOTH'.'FROM'...CAT...') _______________________________ Cat
Recortar personajes principales
Aquí está de nuevo, pero con solo los caracteres principales eliminados:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;
Resultado:
TRIM(LEADING'.'FROM'...CAT...') __________________________________ Cat...
Recortar caracteres finales
Y aquí está con solo los caracteres finales eliminados:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;
Resultado:
TRIM(TRAILING'.'FROM'...CAT...') ___________________________________ ...Cat
Carácter predeterminado
En este ejemplo, no especifico el carácter para recortar, por lo tanto, recorta el espacio en blanco:
SELECT TRIM(' Cat ')
FROM DUAL;
Resultado:
TRIM('CAT') ______________ Cat
No es tan fácil ver el efecto cuando se recortan los espacios en blanco de ambos lados.
Aquí hay otro ejemplo que hace que sea más fácil ver que el espacio en blanco se eliminó de ambos lados:
SELECT
'My' || ' Fat ' || 'Cat',
'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;
Resultado:
'MY'||'FAT'||'CAT' 'MY'||TRIM('FAT')||'CAT' _____________________ ___________________________ My Fat Cat MyFatCat
Números
El carácter de cadena y recorte puede ser VARCHAR2
o cualquier tipo de datos que se pueda convertir implícitamente a VARCHAR2
, por lo que podemos pasar un número como el siguiente. Sin embargo, el valor de retorno es VARCHAR2
.
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;
Resultado:
TRIM(LEADING0FROM007) ________________________ 7
Aquí está con un número diferente recortado:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;
Resultado:
TRIM(LEADING1FROM117) ________________________ 7
Valores nulos
Si la cadena o el carácter de recorte es null
el resultado es null
:
SET NULL 'null';
SELECT
TRIM(null FROM '...Cat...'),
TRIM(BOTH FROM null),
TRIM(null FROM null)
FROM DUAL;
Resultado:
TRIM(NULLFROM'...CAT...') TRIM(BOTHFROMNULL) TRIM(NULLFROMNULL) ____________________________ _____________________ _____________________ null null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Recortar cadenas vacías
Pasar una cadena vacía como carácter de recorte da como resultado null
:
SET NULL 'null';
SELECT TRIM('' FROM ' Cat')
FROM DUAL;
Resultado:
TRIM(''FROM'CAT') ____________________ null
Pero agregar un solo espacio a la cadena vacía cambia eso y recorta los espacios en blanco de la cadena:
SET NULL 'null';
SELECT TRIM(' ' FROM ' Cat')
FROM DUAL;
Resultado:
TRIM(''FROM'CAT') ____________________ Cat
Recuento de argumentos incorrecto
Llamando a TRIM()
sin pasar ningún argumento devuelve un error:
SELECT TRIM()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT TRIM() FROM DUAL Error at Command Line : 1 Column : 13 Error report - SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action:
Y pasar el número incorrecto de argumentos da como resultado un error:
SELECT TRIM(' Cat ', 2)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT TRIM(' Cat ', 2) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause: *Action:
Ver también RTRIM()
y LTRIM()
para funciones más específicas para recortar cada lado de una cuerda. Estas funciones también le permiten recortar varios caracteres de la cadena.