В 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