В Oracle, TRIM()
функцията ви позволява да изрязвате знаци от страните на низ.
Можете да отрежете водещи знаци, последни знаци или и двете.
По подразбиране отрязва празното пространство, но по избор можете да посочите различен знак или знаци за изрязване.
Синтаксис
Синтаксисът е така:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
И двата trim_character
и trim_source
може да бъде VARCHAR2
или всеки тип данни, които могат да бъдат имплицитно преобразувани в VARCHAR2
.
Пример
Ето един прост пример за демонстрация:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;
Резултат:
TRIM('.'FROM'...CAT...') ___________________________ Cat
В този случай посоченият символ (.
) беше премахнат от двете страни на низа.
Беше премахнат от двете страни, защото не посочих от коя страна да го премахна.
Можем да получим същия резултат, като включим BOTH
ключова дума:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;
Резултат:
TRIM(BOTH'.'FROM'...CAT...') _______________________________ Cat
Отрежете водещите герои
Ето го отново, но с премахнати само водещи знаци:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;
Резултат:
TRIM(LEADING'.'FROM'...CAT...') __________________________________ Cat...
Отрежете последващите знаци
И ето го с премахнати само завършващи знаци:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;
Резултат:
TRIM(TRAILING'.'FROM'...CAT...') ___________________________________ ...Cat
Символ по подразбиране
В този пример не посочвам символ за отрязване, следователно той отрязва празно пространство:
SELECT TRIM(' Cat ')
FROM DUAL;
Резултат:
TRIM('CAT') ______________ Cat
Не е толкова лесно да видите ефекта, когато изрязвате празно пространство от двете страни.
Ето още един пример, който улеснява виждането, че бялото пространство е премахнато от двете страни:
SELECT
'My' || ' Fat ' || 'Cat',
'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;
Резултат:
'MY'||'FAT'||'CAT' 'MY'||TRIM('FAT')||'CAT' _____________________ ___________________________ My Fat Cat MyFatCat
Числа
Низът и символът за отрязване могат да бъдат VARCHAR2
или всеки тип данни, които могат да бъдат имплицитно преобразувани в VARCHAR2
, така че можем да предадем число като следното. Въпреки това, връщаната стойност е VARCHAR2
.
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;
Резултат:
TRIM(LEADING0FROM007) ________________________ 7
Ето го с различен номер, който се подрязва:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;
Резултат:
TRIM(LEADING1FROM117) ________________________ 7
Нулеви стойности
Ако низът или символът за отрязване са null
резултатът е null
:
SET NULL 'null';
SELECT
TRIM(null FROM '...Cat...'),
TRIM(BOTH FROM null),
TRIM(null FROM null)
FROM DUAL;
Резултат:
TRIM(NULLFROM'...CAT...') TRIM(BOTHFROMNULL) TRIM(NULLFROMNULL) ____________________________ _____________________ _____________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Изрязване на празни низове
Предаването на празен низ като символ за отрязване води до null
:
SET NULL 'null';
SELECT TRIM('' FROM ' Cat')
FROM DUAL;
Резултат:
TRIM(''FROM'CAT') ____________________ null
Но добавянето на едно пространство към празния низ променя това и отрязва всички празни интервали от низа:
SET NULL 'null';
SELECT TRIM(' ' FROM ' Cat')
FROM DUAL;
Резултат:
TRIM(''FROM'CAT') ____________________ Cat
Неправилен брой аргументи
Извикване на TRIM()
без подаване на аргументи връща грешка:
SELECT TRIM()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT TRIM() FROM DUAL Error at Command Line : 1 Column : 13 Error report - SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action:
И предаването на грешен брой аргументи води до грешка:
SELECT TRIM(' Cat ', 2)
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT TRIM(' Cat ', 2) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause: *Action:
Вижте също RTRIM()
и LTRIM()
за по-целенасочени функции за подрязване на всяка страна на низ. Тези функции също ви позволяват да отрежете няколко знака от низа.