TRIM

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

Usuwa spacje lub podany ciąg znaków z początku i z końca ciągu. Z LEADING tylko na początku, z TRAILING tylko na końcu, z BOTH (domyślnie) z obu stron.

Parametry

  • BOTH / LEADING / TRAILING – opcjonalnie, z której strony usuwać. Domyślnie BOTH.
  • remstr – opcjonalnie, ciąg znaków do usunięcia. Domyślnie spacja.
  • str – ciąg znaków lub kolumna.

Przykłady

Przykłady z tabelami customers, products i orders korzystają z przykładowej bazy danych z serii Podstawy SQL.

SELECT CONCAT('[', TRIM('   London  '), ']') AS trimmed,
  TRIM(LEADING '0' FROM '000123') AS no_zeros,
  TRIM(BOTH '/' FROM '/category/coffee/') AS path;
+----------+----------+-----------------+
| trimmed  | no_zeros | path            |
+----------+----------+-----------------+
| [London] | 123      | category/coffee |
+----------+----------+-----------------+

Usuwany ciąg może mieć kilka znaków; jest usuwany w całości i wielokrotnie:

SELECT TRIM(TRAILING '.00' FROM '27.00') AS price, TRIM(BOTH 'ab' FROM 'ababXab') AS result;
+-------+--------+
| price | result |
+-------+--------+
| 27    | X      |
+-------+--------+

Czyszczenie spacji w danych:

UPDATE customers SET city = '  Manchester ' WHERE id = 2;
UPDATE customers SET city = TRIM(city);
SELECT id, CONCAT('[', city, ']') AS city FROM customers WHERE id = 2;
+----+--------------+
| id | city         |
+----+--------------+
|  2 | [Manchester] |
+----+--------------+

Na co uważać

  • Bez podanego ciągu usuwa tylko spacje – nie tabulatory, końce wierszy ani twarde spacje. Do tego użyj REGEXP_REPLACE() albo czyść dane przy zapisie w PHP.
  • Usuwany ciąg traktowany jest w całości, a nie jako zbiór znaków: TRIM(BOTH 'ab' FROM 'ba') nic nie usuwa.
  • Przy porównaniu za pomocą = spacje na końcu wartości CHAR i VARCHAR są w collation z PAD SPACE ignorowane ('a ' = 'a' jest prawdą), ale w danych pozostają.

Zobacz też:
LTRIM()
RTRIM()
REPLACE()
CHAR_LENGTH()