В Oracle, LTRIM()
функцията ви позволява да отрежете лявата част на низ. По подразбиране отрязва празното пространство, но по избор можете да посочите различен знак или знаци за изрязване.
Синтаксис
Синтаксисът е така:
LTRIM(char [, set ])
Където char
и set
може да бъде всеки от типовете данни CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
или NCLOB
.
LTRIM
премахва от левия край на char
всички знаци, съдържащи се в set
. Ако не посочите set
, след което по подразбиране е едно празно място.
Пример
Ето един прост пример за демонстрация:
SELECT LTRIM(' Cat')
FROM DUAL;
Резултат:
LTRIM('CAT') _______________ Cat
В този случай не посочих кой знак/и да отрежа и така всяко отделно празно място беше изрязано от лявата част на низа.
Ето го отново в сравнение с оригиналния (неподплатен) низ:
SELECT ' Cat'
FROM DUAL
UNION ALL
SELECT LTRIM(' Cat')
FROM DUAL;
Резултат:
'CAT' ___________ Cat Cat
Посочете знак
В този пример посочвам знак за отрязване:
SELECT LTRIM('...Cat...', '.')
FROM DUAL;
Резултат:
LTRIM('...CAT...','.') _________________________ Cat...
Така че можем да видим, че персонажът е бил подрязан от лявата страна, но не и от дясната страна. За да отрежете дясната страна, използвайте RTRIM()
или TRIM()
.
Обърнете внимание, че LTRIM()
само отрязва символа/ите в набора, докато има символ, който не е в набора. Ето пример за това, което имам предвид:
SELECT LTRIM('...A...Cat', '.')
FROM DUAL;
Резултат:
LTRIM('...A...CAT','.') __________________________ A...Cat
Въпреки това, ако включим A
в комплекта, тогава получаваме различен резултат:
SELECT LTRIM('...A...Cat', '.A')
FROM DUAL;
Резултат:
LTRIM('...A...CAT','.A') ___________________________ Cat
Пример за база данни
Ето пример за изрязване на лявата част от стойностите в колона на база данни:
SELECT
country_name,
LTRIM(country_name, 'Ar') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Резултат:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina gentina Australia ustralia Belgium Belgium Brazil Brazil Canada Canada
Нулеви стойности
Ако някой от аргументите е null
резултатът е null
:
SET NULL 'null';
SELECT
LTRIM(null, 3),
LTRIM(' Cat', null),
LTRIM(null, null)
FROM DUAL;
Резултат:
LTRIM(NULL,3) LTRIM('CAT',NULL) LTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Изрязване на празни низове
Предаването на празен низ като втори аргумент води до null
:
SET NULL 'null';
SELECT LTRIM(' Cat', '')
FROM DUAL;
Резултат:
LTRIM('CAT','') __________________ null
Но добавянето на едно пространство към празния низ променя това и отрязва всички празни интервали отляво на низа:
SELECT LTRIM(' Cat', ' ')
FROM DUAL;
Резултат:
LTRIM('CAT','') __________________ Cat
Неправилен брой аргументи
Извикване на LTRIM()
без подаване на аргументи връща грешка:
SELECT LTRIM()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT LTRIM() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
И предаването на грешен брой аргументи води до грешка:
SELECT LTRIM('Cat', 1, '>')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT LTRIM('Cat', 1, '>') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: