В 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() за по-целенасочени функции за подрязване на всяка страна на низ. Тези функции също ви позволяват да отрежете няколко знака от низа.