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()