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

Hàm REPLACE () trong Oracle

Trong Oracle, REPLACE() hàm cho phép bạn thay thế một phần của chuỗi bằng một chuỗi khác.

Hàm chấp nhận ba đối số:chuỗi, chuỗi con để thay thế và chuỗi thay thế (để thay thế chuỗi con bằng).

Bạn có thể bỏ qua chuỗi thay thế, trong trường hợp đó, hàm sẽ xóa tất cả các phiên bản của chuỗi con.

Cú pháp

Cú pháp như sau:

REPLACE(char, search_string
        [, replacement_string ]
       )

Ở đâu char là chuỗi, search_string là chuỗi con để thay thế và replacement_string là chuỗi để thay thế chuỗi con đó bằng.

Ví dụ

Đây là một ví dụ cơ bản:

SELECT 
    REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL;

Kết quả:

Barrier Reef

Trong trường hợp này, chúng tôi đã thay thế chuỗi con Island với Reef .

Nhiều Kết hợp

Nếu chuỗi được thay thế xảy ra nhiều lần trong chuỗi, tất cả các lần xuất hiện sẽ được thay thế:

SELECT 
    REPLACE('Black dogs and white dogs', 'dog', 'cat')
FROM DUAL;

Kết quả:

Black cats and white cats

Không phù hợp

Nếu chuỗi con không xuất hiện trong chuỗi, REPLACE() trả về chuỗi không thay đổi:

SELECT 
    REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL;

Kết quả:

Barrier Island

Xóa một chuỗi con

Bỏ qua đối số thứ ba sẽ xóa chuỗi con khỏi chuỗi:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

Kết quả:

Black  and white 

Nếu quan sát kỹ, bạn sẽ nhận thấy rằng các khoảng trắng vẫn còn, vì chúng tôi không chỉ định bất kỳ khoảng trắng nào trong chuỗi con.

Đây là nó một lần nữa với không gian bao gồm:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

Kết quả:

Black  and white 

Phân biệt chữ hoa chữ thường

REPLACE() hàm thực hiện so khớp phân biệt chữ hoa chữ thường:

SELECT 
    REPLACE('Barrier Island', 'island', 'reef')
FROM DUAL;

Kết quả:

Barrier Island

Trong ví dụ này, trường hợp không khớp và do đó, chuỗi ban đầu được trả về không thay đổi.

Chuỗi trống

Dưới đây là những gì sẽ xảy ra khi một chuỗi trống được chuyển cho mỗi đối số nhất định:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;

Kết quả:

   1            2         3 
____ ____________ _________ 
     Black dog    Black    

Vì vậy, trong trường hợp này:

  • Truyền một chuỗi trống cho chuỗi ban đầu trả về một chuỗi trống.
  • Truyền một chuỗi trống cho đối số thứ hai sẽ trả về chuỗi ban đầu.
  • Truyền một chuỗi trống cho đối số thứ ba sẽ xóa chuỗi được thay thế khỏi chuỗi.

Ký tự không gian

Một chuỗi trống không giống với ký tự khoảng trắng.

Dưới đây là những gì sẽ xảy ra khi chúng tôi thay đổi chuỗi trống thành dấu cách:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;

Kết quả:

   1              2          3 
____ ______________ __________ 
     Blackcatdog    Black     

Do đó, nếu chuỗi không có gì khác ngoài khoảng trắng, thì chúng ta có thể thay thế chuỗi đó bằng một chuỗi khác:

SELECT REPLACE(' ', ' ', 'cat')
FROM DUAL;

Kết quả:

cat

Đối số rỗng

Chuyển null đối với mỗi đối số hoạt động giống như truyền một chuỗi rỗng:

SET NULL 'null';
SELECT 
    REPLACE(null, 'dog', 'cat') AS "1",
    REPLACE('Black dog', null, 'cat') AS "2",
    REPLACE('Black dog', 'dog', null) AS "3"
FROM DUAL;

Kết quả:

      1            2         3 
_______ ____________ _________ 
null    Black dog    Black    

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.

Thiếu đối số

Đang gọi REPLACE() mà không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT REPLACE()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT REPLACE()
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:

Quá nhiều đối số

Và việc chuyển quá nhiều đối số sẽ trả về lỗi:

SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT REPLACE('Cat', 'a', 'b', 'c')
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. ĐẶT SQLBLANKLINES:Cách Cho phép Dòng trống trong SQLcl &SQL * Plus

  2. Làm cách nào để chuyển động các giá trị cho toán tử IN?

  3. Tham số thời gian chờ IDLE trong Oracle

  4. Tính toán chênh lệch giữa 2 ngày / giờ trong Oracle SQL

  5. Tự động hóa các công việc tích hợp dữ liệu IRI với Oracle Job Scheduler