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

Xác định số điện thoại trong một lần lặp PL / SQL

Sự cần thiết của một vòng lặp ở đây là gì? Bạn phải viết lại tuyên bố cập nhật của mình thành một thứ như sau:

UPDATE t_numbers tn
   SET tn.country = (SELECT ic.country
                       FROM int_codes ic
                      WHERE ic.int_code = substr(tn.phone_number, 1, 4))
 WHERE tn.country is null
   AND EXISTS (SELECT 1
                 FROM int_codes ic
                WHERE ic.int_code = substr(tn.phone_number, 1, 4));

Sau đó, lặp lại tương tự cho 3, 2 và 1 như sau (cho 3):

UPDATE t_numbers tn
   SET tn.country = (SELECT ic.country
                       FROM int_codes ic
                      WHERE ic.int_code = substr(tn.phone_number, 1, 3))
 WHERE tn.country is null
   AND EXISTS (SELECT 1
                 FROM int_codes ic
                WHERE ic.int_code = substr(tn.phone_number, 1, 3));

CẬP NHẬT:

Bạn cũng có thể lặp qua 4 đến 1 để đạt được nhiệm vụ

  begin
    for i in 1..4 loop
      UPDATE t_numbers tn
       SET tn.country = (SELECT ic.country
                           FROM int_codes ic
                          WHERE ic.int_code = substr(tn.phone_number, 1, (5-i)))
     WHERE tn.country is null
       AND EXISTS (SELECT 1
                     FROM int_codes ic
                    WHERE ic.int_code = substr(tn.phone_number, 1, (5-i)));
    end loop;
  END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm ngày vào dấu thời gian

  2. Hàm Thousand Seperator trong oracle?

  3. Ánh xạ khóa ngoại với tên cột tùy chỉnh

  4. Định dạng đầu ra của các truy vấn trong SQLPlus

  5. Làm thế nào để chọn một nhà cung cấp Oracle cho ứng dụng .Net?