Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm TRIM () trong Oracle

Trong Oracle, TRIM() hàm cho phép bạn cắt các ký tự khỏi các cạnh của một chuỗi.

Bạn có thể cắt các ký tự đầu, ký tự cuối hoặc cả hai.

Theo mặc định, nó cắt bớt khoảng trắng, nhưng bạn có thể tùy chọn chỉ định một ký tự hoặc các ký tự khác để cắt.

Cú pháp

Cú pháp như sau:

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

Cả trim_character trim_source có thể là VARCHAR2 hoặc bất kỳ kiểu dữ liệu nào có thể được chuyển đổi hoàn toàn thành VARCHAR2 .

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh:

SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

Kết quả:

   TRIM('.'FROM'...CAT...') 
___________________________ 
Cat                        

Trong trường hợp này, ký tự được chỉ định (. ) đã bị xóa khỏi cả hai bên của chuỗi.

Nó đã bị xóa từ cả hai bên vì tôi không chỉ định bên nào sẽ xóa nó.

Chúng ta có thể nhận được kết quả tương tự bằng cách bao gồm BOTH từ khóa:

SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

Kết quả:

   TRIM(BOTH'.'FROM'...CAT...') 
_______________________________ 
Cat                            

Cắt bỏ các nhân vật chính

Đây là một lần nữa, nhưng chỉ loại bỏ các ký tự đứng đầu:

SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

Kết quả:

   TRIM(LEADING'.'FROM'...CAT...') 
__________________________________ 
Cat...                            

Cắt bỏ các ký tự theo sau

Và đây là nó chỉ có các ký tự ở cuối bị xóa:

SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

Kết quả:

   TRIM(TRAILING'.'FROM'...CAT...') 
___________________________________ 
...Cat                             

Ký tự mặc định

Trong ví dụ này, tôi không chỉ định ký tự để cắt, do đó, nó cắt bớt khoảng trống:

SELECT TRIM(' Cat ')
FROM DUAL;

Kết quả:

   TRIM('CAT') 
______________ 
Cat           

Không dễ dàng nhận thấy hiệu quả khi cắt bỏ khoảng trắng từ cả hai bên.

Dưới đây là một ví dụ khác giúp bạn dễ dàng nhận thấy rằng khoảng trắng đã được loại bỏ từ cả hai phía:

SELECT 
    'My' || ' Fat ' || 'Cat',
    'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;

Kết quả:

   'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
_____________________ ___________________________ 
My Fat Cat            MyFatCat                   

Số

Chuỗi và ký tự cắt có thể là VARCHAR2 hoặc bất kỳ kiểu dữ liệu nào có thể được chuyển đổi hoàn toàn thành VARCHAR2 , vì vậy chúng ta có thể vượt qua một số như sau. Tuy nhiên, giá trị trả về là VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Kết quả:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Đây là nó với một số khác được cắt bớt:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Kết quả:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Giá trị rỗng

Nếu chuỗi hoặc ký tự cắt là null kết quả là null :

SET NULL 'null';

SELECT 
    TRIM(null FROM '...Cat...'),
    TRIM(BOTH FROM null),
    TRIM(null FROM null)
FROM DUAL;

Kết quả:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
null                         null                  null                 

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Cắt bỏ chuỗi trống

Chuyển một chuỗi trống khi ký tự cắt dẫn đến null :

SET NULL 'null';

SELECT TRIM('' FROM '   Cat')
FROM DUAL;

Kết quả:

   TRIM(''FROM'CAT') 
____________________ 
null                

Nhưng việc thêm một khoảng trắng vào chuỗi trống sẽ thay đổi điều đó và cắt bớt bất kỳ khoảng trắng nào khỏi chuỗi:

SET NULL 'null';

SELECT TRIM(' ' FROM '   Cat')
FROM DUAL;

Kết quả:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Số lượng đối số không chính xác

Đang gọi TRIM() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT TRIM()
FROM DUAL;

Kết quả:

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:

Và việc chuyển sai số đối số dẫn đến lỗi:

SELECT TRIM(' Cat ', 2)
FROM DUAL;

Kết quả:

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:

Cũng xem RTRIM()LTRIM() để biết thêm các hàm được nhắm mục tiêu để cắt xén từng bên của chuỗi. Các hàm này cũng cho phép bạn cắt nhiều ký tự khỏi chuỗi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lược đồ APPLICSYSPUB

  2. Thay đổi độ chính xác của cột số trong Oracle

  3. Truy vấn con Oracle không thấy biến từ khối ngoài 2 cấp trở lên

  4. Giá trị trình tự Oracle không được sắp xếp

  5. Chuyển đổi Unixtime sang Datetime SQL (Oracle)