В MariaDB, TRIM() е вградена функция за низ, която премахва знаци от началото или края на низ.
По подразбиране премахва началните и крайните интервали, но можете да посочите кой знак да премахнете, както и от коя страна/и искате да бъде премахнат.
Синтаксис
TRIM() функцията може да се използва, както следва:
TRIM([remstr FROM] str) Или:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Където str е низът за премахване на всякакви крайни интервали и remstr е низът за премахване.
Ако remstr не е предоставен, тогава TRIM() премахва интервалите.
Пример
Ето един основен пример:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(' Caribbean Island ') AS "Trimmed"; Резултат:
+-----------------------+----------------+| Неподрязани | Подрязани |+------------------+----------------+| Карибски остров | Карибски остров |+-----------------------+----------------+предварително>Този пример използва най-основния синтаксис. Всичко, което направихме, беше да предоставим връвта за подрязване. Не посочихме кой знак/и да отрежем и така всички интервали бяха изрязани от двете страни на низа.
Можем също да видим, че пространството в низа остава непокътнато.
BOTHАргументПо подразбиране
TRIM()подрязва и двете страни на низа. Можете обаче изрично да посочитеBOTHако желаете:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(BOTH FROM ' Caribbean Island ') AS "Trimmed";Резултат:
+-----------------------+----------------+| Неподрязани | Подрязани |+------------------+----------------+| Карибски остров | Карибски остров |+-----------------------+----------------+предварително>Получаваме същия резултат като предишния пример.
LEADINGАргументПосочване на
LEADINGограничава операцията за подрязване само до началото на низа:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(LEADING FROM ' Caribbean Island ') AS "Trimmed";Резултат:
+-----------------------+--------------------- +| Неподрязани | Подрязани |+-------------------+---------------------+ | Карибски остров | Карибски остров |+-----------------------+--------------------- +Можем да видим, че все още съществуват интервали от дясната страна на подрязания низ. Само лявата част беше подрязана.
TRAILINGАргументПосочване на
TRAILINGограничава операцията за подрязване само до началото на низа:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(TRAILING FROM ' Caribbean Island ') AS "Trimmed";Резултат:
+-----------------------+--------------------- +| Неподрязани | Подрязани |+-------------------+---------------------+ | Карибски остров | Карибски остров |+-----------------------+--------------------- +Този път беше подрязана само дясната част. Все още има интервали от лявата страна на подрязания низ.
Посочете низ за отрязване
Ето пример за определяне кой знак да се отреже:
SELECT '...mountain...' AS "Untrimmed", TRIM('.' FROM '...mountain...') AS "Trimmed";Резултат:
+----------------+---------+| Неподрязани | Подрязани |+----------------+----------+| ...планина... | планина |+----------------+---------+Не е задължително да е единичен знак. Можете да посочите произволен низ за отрязване:
SELECT TRIM('.' FROM '.+.mountain.+.') AS "1", TRIM('.+' FROM '.+.mountain.+.') AS "2", TRIM('+.' FROM '.+.mountain.+.') AS "3", TRIM('.+.' FROM '.+.mountain.+.') AS "4";Резултат:
+--------------+--------------+--------------+- ---------+| 1 | 2 | 3 | 4 |+--------------+--------------+--------------+-- --------+| +.планина.+ | .планина.+. | .+.планина. | планина |+--------------+--------------+--------------+-- --------+Можете дори да отрежете част от думата, ако искате:
SELECT TRIM('moun' FROM 'mountain');Резултат:
+------------------------------+| TRIM('moun' FROM 'mountain') |+------------------------------+| замърсявам |+------------------------------+Можем също да използваме
BOTH,LEADINGиTRAILINGаргументи, когато указвате низа за отрязване.Пример:
SELECT TRIM(BOTH '.' FROM '...mountain...') AS "Both", TRIM(LEADING '.' FROM '...mountain...') AS "Leading", TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";Резултат:
+----------+------------+------------+| И двете | Водещ | Следене |+----------+------------+------------+| планина | планина... | ...планина |+----------+------------+------------+Нулеви аргументи
Ако е дадено
nullаргумент, резултатът еnull:SELECT TRIM(null);Резултат:
+-----------+| TRIM(null) |+-----------+| NULL |+------------+Режим Oracle
Когато не работи в режим на Oracle, ако резултатът е празен (т.е. има дължина нула), резултатът е празен низ.
Въпреки това, когато работите в режим на Oracle, резултатът е
null.Тук е в режим по подразбиране (т.е. не в режим на Oracle):
SELECT TRIM('');Резултат:
+---------+| TRIM('') |+----------+| |+---------+Сега нека преминем към режим на Oracle:
SET SQL_MODE=ORACLE;И стартирайте кода отново:
SELECT TRIM('');Резултат:
+---------+| TRIM('') |+----------+| NULL |+----------+Има и алтернативен начин да направите това. Вместо да превключвате в режим на Oracle, можете да използвате
TRIM_ORACLE()като име на функцията.Нека се върнем към режима по подразбиране:
SET SQL_MODE=DEFAULT;И сега стартирайте
TRIM_ORACLE():SELECT TRIM_ORACLE('');Резултат:
+-----------------+| TRIM_ORACLE('') |+----------------+| NULL |++-----------------+Липсващ аргумент
Извикване на
TRIM()без аргумент води до грешка:SELECT TRIM();Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1