sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona TRIM() en MariaDB

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