Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция LTRIM() в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е еквивалентът на varchar(max) в Oracle?

  2. ORACLE След задействане на актуализацията:разрешаване на грешка при мутиращата таблица на ORA-04091

  3. Функция или процедура за клауза IN

  4. BDE срещу ADO в Delphi

  5. Изписване с главни букви на имената на дните и месеца при форматиране на дати в Oracle