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

Làm thế nào để tách một chuỗi trong PL / SQL?

Trong bài viết này, tôi đưa ra một ví dụ về một hàm mà tôi thường sử dụng để tách một chuỗi trong PL / SQL. Đặc biệt, khi tôi đang viết một chương trình để nhập một tệp được phân tách. Đây là chức năng đó và một ví dụ về cách sử dụng nó.

PL / SQL Hàm để tách một chuỗi

Hàm này có bốn tham số và chi tiết của các tham số này như sau:

  1. Source_String :Chuỗi để tách
  2. Field_Position :Vị trí dấu phân cách
  3. Chưa được chấm dứt :Sai theo mặc định, nhưng nếu bạn chuyển True, thì nó sẽ thêm dấu phân cách đã chỉ định vào cuối chuỗi.
  4. Dấu phân cách :Mặc định là Dấu phẩy ',', bạn có thể chuyển bất kỳ dấu phân cách nào khác.
CREATE OR REPLACE FUNCTION GetString (
Source_string IN VARCHAR2,
Field_position IN NUMBER,
UnTerminated IN BOOLEAN DEFAULT FALSE,
Delimiter IN VARCHAR2 DEFAULT ',')
RETURN VARCHAR2
IS
iPtrEnd PLS_INTEGER := 0;
iPtrStart PLS_INTEGER := 0;
vcSourceStrCopy VARCHAR2 (4000) := Source_string;
BEGIN
IF UnTerminated
THEN
vcSourceStrCopy := vcSourceStrCopy || Delimiter;
END IF;

IF Field_Position > 1
THEN
iPtrStart :=
INSTR (vcSourceStrCopy,
Delimiter,
1,
Field_Position - 1)
+ LENGTH (Delimiter);
ELSE
iPtrStart := 1;
END IF;

iPtrEnd :=
INSTR (vcSourceStrCopy,
Delimiter,
1,
Field_Position);
RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart));
END GetString;

Ví dụ:Sử dụng Hàm này trong Chương trình PL / SQL

SET SERVEROUTPUT ON;

DECLARE
   v_string      VARCHAR2 (1000) := 'Java|.Net|C|Oracle|PHP';

   TYPE t_string IS TABLE OF VARCHAR2 (1000)
                       INDEX BY BINARY_INTEGER;

   t_str_array   t_string;
BEGIN
   FOR i IN 1 .. 5
   LOOP
      t_str_array (i) :=
         getstring (v_string,
                    i,
                    TRUE,
                    '|');
   END LOOP;

   FOR j IN t_str_array.FIRST .. t_str_array.LAST
   LOOP
      DBMS_OUTPUT.put_Line (t_str_array (j));
   END LOOP;
END;
/

Đầu ra:

Java
.Net
C
Oracle
PHP
PL/SQL procedure successfully completed.

Xem thêm:

  • Xuất dữ liệu sang JSON bằng PL / SQL trong Oracle 11g
  • Chương trình PL / SQL để in thông tin chi tiết về nhân viên
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gửi email có tệp đính kèm trong Oracle D2k, Oracle Forms 10g, Oracle Forms 6i

  2. Bật SSL hoặc TLS trong Oracle Apps R12

  3. Kết nối SQL Server với Oracle

  4. ORA-08177:không thể tuần tự hóa quyền truy cập cho giao dịch này

  5. ORA-01034:ORACLE không khả dụng ORA-27101:vùng bộ nhớ chia sẻ không tồn tại