sql >> Database >  >> RDS >> MariaDB

Hoe TRIM() werkt in MariaDB

In MariaDB, TRIM() is een ingebouwde tekenreeksfunctie die tekens aan het begin of einde van een tekenreeks verwijdert.

Standaard worden voorloop- en volgspaties verwijderd, maar u kunt specificeren welk teken u wilt verwijderen en van welke zijde(n) u het wilt laten verwijderen.

Syntaxis

De TRIM() functie kan als volgt worden gebruikt:

TRIM([remstr FROM] str)

Of:

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

Waar str is de tekenreeks waarvan eventuele volgspaties moeten worden verwijderd, en remstr is de tekenreeks die moet worden verwijderd.

Als remstr niet is opgegeven, dan TRIM() verwijdert spaties.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM('   Caribbean Island   ') AS "Trimmed";

Resultaat:

+------------------------+------------------+
| Untrimmed              | Trimmed          |
+------------------------+------------------+
|    Caribbean Island    | Caribbean Island |
+------------------------+------------------+

In dit voorbeeld wordt de meest elementaire syntaxis gebruikt. Het enige dat we deden, was het touwtje om te trimmen. We hebben niet gespecificeerd welk(e) teken(s) moeten worden bijgesneden, en daarom zijn alle spaties aan beide zijden van de tekenreeks bijgesneden.

We kunnen ook zien dat de spatie binnen de string intact blijft.

De BOTH Argument

Standaard TRIM() trimt beide zijden van de string. U kunt echter expliciet BOTH . specificeren als je wilt:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(BOTH FROM '   Caribbean Island   ') AS "Trimmed";

Resultaat:

+------------------------+------------------+
| Untrimmed              | Trimmed          |
+------------------------+------------------+
|    Caribbean Island    | Caribbean Island |
+------------------------+------------------+

We krijgen hetzelfde resultaat als het vorige voorbeeld.

De LEADING Argument

Specificeren van LEADING beperkt de trimbewerking tot alleen het begin van de string:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(LEADING FROM '   Caribbean Island   ') AS "Trimmed";

Resultaat:

+------------------------+---------------------+
| Untrimmed              | Trimmed             |
+------------------------+---------------------+
|    Caribbean Island    | Caribbean Island    |
+------------------------+---------------------+

We kunnen zien dat er nog steeds spaties bestaan ​​aan de rechterkant van de bijgesneden string. Alleen het linkerdeel is bijgesneden.

De TRAILING Argument

Specificeren van TRAILING beperkt de trimbewerking tot alleen het begin van de string:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(TRAILING FROM '   Caribbean Island   ') AS "Trimmed";

Resultaat:

+------------------------+---------------------+
| Untrimmed              | Trimmed             |
+------------------------+---------------------+
|    Caribbean Island    | Caribbean Island    |
+------------------------+---------------------+

Dit keer werd alleen het rechterdeel bijgesneden. Er zijn nog steeds spaties aan de linkerkant van de bijgesneden tekenreeks.

Geef een tekenreeks op om te trimmen

Hier is een voorbeeld van specificeren welk teken moet worden bijgesneden:

SELECT 
    '...mountain...' AS "Untrimmed",
    TRIM('.' FROM '...mountain...') AS "Trimmed";

Resultaat:

+----------------+----------+
| Untrimmed      | Trimmed  |
+----------------+----------+
| ...mountain... | mountain |
+----------------+----------+

Het hoeft geen enkel teken te zijn. U kunt elke string specificeren om te trimmen:

SELECT 
    TRIM('.' FROM '.+.mountain.+.') AS "1",
    TRIM('.+' FROM '.+.mountain.+.') AS "2",
    TRIM('+.' FROM '.+.mountain.+.') AS "3",
    TRIM('.+.' FROM '.+.mountain.+.') AS "4";

Resultaat:

+--------------+--------------+--------------+----------+
| 1            | 2            | 3            | 4        |
+--------------+--------------+--------------+----------+
| +.mountain.+ | .mountain.+. | .+.mountain. | mountain |
+--------------+--------------+--------------+----------+

Je kunt zelfs een deel van het woord inkorten als je wilt:

SELECT TRIM('moun' FROM 'mountain');

Resultaat:

+------------------------------+
| TRIM('moun' FROM 'mountain') |
+------------------------------+
| tain                         |
+------------------------------+

We kunnen ook de BOTH . gebruiken , LEADING en TRAILING argumenten bij het specificeren van de te trimmen string.

Voorbeeld:

SELECT 
    TRIM(BOTH '.' FROM '...mountain...') AS "Both",
    TRIM(LEADING '.' FROM '...mountain...') AS "Leading",
    TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";

Resultaat:

+----------+-------------+-------------+
| Both     | Leading     | Trailaing   |
+----------+-------------+-------------+
| mountain | mountain... | ...mountain |
+----------+-------------+-------------+

Nullargumenten

Indien een null wordt gegeven argument, het resultaat is null :

SELECT TRIM(null);

Resultaat:

+------------+
| TRIM(null) |
+------------+
| NULL       |
+------------+

Oracle-modus

Wanneer niet draait in Oracle-modus, als het resultaat leeg is (d.w.z. het heeft een lengte van nul), is het resultaat een lege string.

Als het echter in Oracle-modus wordt uitgevoerd, is het resultaat null .

Hier is het in de standaardmodus (d.w.z. niet in Oracle-modus):

SELECT TRIM('');

Resultaat:

+----------+
| TRIM('') |
+----------+
|          |
+----------+

Laten we nu overschakelen naar de Oracle-modus:

SET SQL_MODE=ORACLE;

En voer de code opnieuw uit:

SELECT TRIM('');

Resultaat:

+----------+
| TRIM('') |
+----------+
| NULL     |
+----------+

Er is ook een alternatieve manier om dit te doen. In plaats van over te schakelen naar Oracle-modus, kunt u TRIM_ORACLE() . gebruiken als de functienaam.

Laten we teruggaan naar de standaardmodus:

SET SQL_MODE=DEFAULT;

En voer nu TRIM_ORACLE() uit :

SELECT TRIM_ORACLE('');

Resultaat:

+-----------------+
| TRIM_ORACLE('') |
+-----------------+
| NULL            |
+-----------------+

Ontbrekend argument

TRIM() . aanroepen zonder een argument resulteert in een fout:

SELECT TRIM();

Resultaat:

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

  1. Wijzig decimaalteken in MySQL

  2. Hoe verbinding te maken met MySQL met behulp van PHP

  3. Een overzicht van Quests Nieuwste databasebewakingsservice - Spotlight Cloud

  4. Interessante dingen over IN PLAATS VAN triggers