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. Oracle में अपरकेस अक्षरों वाली पंक्तियों को खोजने के 4 तरीके

  2. Oracle SYS_GUID नहीं बदलता है

  3. Oracle - एकल पंक्ति को कई पंक्तियों में विभाजित करें

  4. Oracle में Rowid की अधिकतम लंबाई का पता लगाने की कोशिश कर रहा है

  5. ट्रिगर जो त्रुटियों के साथ संकलित व्यक्ति तालिका में डालने या हटाने पर लॉग तालिका में पंक्ति सम्मिलित करता है