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

Идентифицирайте телефонни номера в PL/SQL итерация

Каква е нуждата от цикъл тук? Трябва да пренапишете изявлението си за актуализиране на нещо подобно:

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));

След това повторете същото за 3, 2 и 1, както следва (за 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));

АКТУАЛИЗАЦИЯ:

Можете също така да преминете през 4 към 1, за да постигнете задачата

  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. Анонимен тип TABLE или VARRAY в Oracle

  2. Моля, помогнете с SQLPLUS? Как да стартирам SQLPLUS с DEFINE `OFF` първоначално?

  3. Как да работим с функции за дата в Oracle sql

  4. Условие WHERE за нулев входен параметър на Oracle PL\SQL

  5. N-та максимална заплата в Oracle