En MariaDB, TRIM()
es una función de cadena integrada que elimina caracteres desde el principio o el final de una cadena.
De forma predeterminada, elimina los espacios iniciales y finales, pero puede especificar qué carácter eliminar, así como de qué lado o lados desea eliminarlo.
Sintaxis
El TRIM()
La función se puede utilizar de la siguiente manera:
TRIM([remstr FROM] str)
O:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Donde str
es la cadena para eliminar los espacios finales, y remstr
es la cadena a eliminar.
Si remstr
no se proporciona, entonces TRIM()
elimina espacios.
Ejemplo
He aquí un ejemplo básico:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(' Caribbean Island ') AS "Trimmed";
Resultado:
+------------------------+------------------+ | Untrimmed | Trimmed | +------------------------+------------------+ | Caribbean Island | Caribbean Island | +------------------------+------------------+
Este ejemplo utiliza la sintaxis más básica. Todo lo que hicimos fue proporcionar la cuerda para recortar. No especificamos qué carácter/es recortar, por lo que todos los espacios se recortaron de ambos lados de la cadena.
También podemos ver que el espacio dentro de la cadena permanece intacto.
Los BOTH
Argumento
Por defecto, TRIM()
recorta ambos lados de la cuerda. Sin embargo, puede especificar explícitamente BOTH
si lo desea:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(BOTH FROM ' Caribbean Island ') AS "Trimmed";
Resultado:
+------------------------+------------------+ | Untrimmed | Trimmed | +------------------------+------------------+ | Caribbean Island | Caribbean Island | +------------------------+------------------+
Obtenemos el mismo resultado que el ejemplo anterior.
El LEADING
Argumento
Especificando LEADING
limita la operación de recorte solo al comienzo de la cadena:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(LEADING FROM ' Caribbean Island ') AS "Trimmed";
Resultado:
+------------------------+---------------------+ | Untrimmed | Trimmed | +------------------------+---------------------+ | Caribbean Island | Caribbean Island | +------------------------+---------------------+
Podemos ver que todavía existen espacios en el lado derecho de la cadena recortada. Solo se recortó la parte izquierda.
El TRAILING
Argumento
Especificando TRAILING
limita la operación de recorte solo al comienzo de la cadena:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(TRAILING FROM ' Caribbean Island ') AS "Trimmed";
Resultado:
+------------------------+---------------------+ | Untrimmed | Trimmed | +------------------------+---------------------+ | Caribbean Island | Caribbean Island | +------------------------+---------------------+
Esta vez, solo se recortó la parte derecha. Todavía existen espacios en el lado izquierdo de la cadena recortada.
Especifique una cadena para recortar
Aquí hay un ejemplo de cómo especificar qué carácter recortar:
SELECT
'...mountain...' AS "Untrimmed",
TRIM('.' FROM '...mountain...') AS "Trimmed";
Resultado:
+----------------+----------+ | Untrimmed | Trimmed | +----------------+----------+ | ...mountain... | mountain | +----------------+----------+
No tiene que ser un solo personaje. Puede especificar cualquier cadena para recortar:
SELECT
TRIM('.' FROM '.+.mountain.+.') AS "1",
TRIM('.+' FROM '.+.mountain.+.') AS "2",
TRIM('+.' FROM '.+.mountain.+.') AS "3",
TRIM('.+.' FROM '.+.mountain.+.') AS "4";
Resultado:
+--------------+--------------+--------------+----------+ | 1 | 2 | 3 | 4 | +--------------+--------------+--------------+----------+ | +.mountain.+ | .mountain.+. | .+.mountain. | mountain | +--------------+--------------+--------------+----------+
Incluso puedes recortar parte de la palabra si quieres:
SELECT TRIM('moun' FROM 'mountain');
Resultado:
+------------------------------+ | TRIM('moun' FROM 'mountain') | +------------------------------+ | tain | +------------------------------+
También podemos usar BOTH
, LEADING
y TRAILING
argumentos al especificar la cadena a recortar.
Ejemplo:
SELECT
TRIM(BOTH '.' FROM '...mountain...') AS "Both",
TRIM(LEADING '.' FROM '...mountain...') AS "Leading",
TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";
Resultado:
+----------+-------------+-------------+ | Both | Leading | Trailaing | +----------+-------------+-------------+ | mountain | mountain... | ...mountain | +----------+-------------+-------------+
Argumentos nulos
Si se le da un null
argumento, el resultado es null
:
SELECT TRIM(null);
Resultado:
+------------+ | TRIM(null) | +------------+ | NULL | +------------+
Modo oráculo
Cuando no ejecutándose en modo Oracle, si el resultado está vacío (es decir, tiene una longitud de cero), el resultado es una cadena vacía.
Sin embargo, cuando se ejecuta en modo Oracle, el resultado es null
.
Aquí está en modo predeterminado (es decir, no en modo Oracle):
SELECT TRIM('');
Resultado:
+----------+ | TRIM('') | +----------+ | | +----------+
Ahora cambiemos al modo Oracle:
SET SQL_MODE=ORACLE;
Y ejecuta el código de nuevo:
SELECT TRIM('');
Resultado:
+----------+ | TRIM('') | +----------+ | NULL | +----------+
También hay una forma alternativa de hacer esto. En lugar de cambiar al modo Oracle, puede usar TRIM_ORACLE()
como el nombre de la función.
Volvamos al modo predeterminado:
SET SQL_MODE=DEFAULT;
Y ahora ejecuta TRIM_ORACLE()
:
SELECT TRIM_ORACLE('');
Resultado:
+-----------------+ | TRIM_ORACLE('') | +-----------------+ | NULL | +-----------------+
Argumento faltante
Llamando a TRIM()
sin un argumento da como resultado un error:
SELECT TRIM();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1