PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

5 . से अधिक दोहराने वाली संख्या वाले रिकॉर्ड हटाना

ठीक है, तो यहाँ तर्क का सार इस प्रकार किया जा सकता है:

  • किसी दी गई संख्या में समान क्रमागत अंकों की सबसे लंबी श्रंखला ज्ञात कीजिए; और
  • सही लौटें अगर वह सबसे लंबा मान> 5 अंक हो

सही?

तो, इसे क्रमागत अंकों की श्रृंखला में विभाजित करते हैं:

regress=> SELECT regexp_matches('666666689', '(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)', 'g');
 regexp_matches 
----------------
 {6666666}
 {8}
 {9}
(3 rows)

फिर सबसे लंबे समय तक फ़िल्टर करें:

regress=> 

SELECT x[1] 
FROM regexp_matches('6666666898', '(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)', 'g') x 
ORDER BY length(x[1]) DESC 
LIMIT 1;

    x    
---------
 6666666
(1 row)

... लेकिन वास्तव में, हम वास्तव में इसकी परवाह नहीं करते हैं, बस अगर कोई प्रविष्टि 5 अंकों से अधिक लंबी है, तो:

SELECT x[1] 
FROM regexp_matches('6666666898', '(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)', 'g') x 
WHERE length(x[1]) > 5;

EXISTS . के रूप में उपयोग किया जा सकता है परीक्षण, उदा.

WITH blah(n) AS (VALUES('999999969'),('000000089'),('666666689'),('15552555'))
SELECT n
FROM blah
WHERE EXISTS (
    SELECT x[1] 
    FROM regexp_matches(n, '(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)', 'g') x 
    WHERE length(x[1]) > 5
)

जो वास्तव में बहुत कुशल है और सही परिणाम (हमेशा अच्छा) लौटाता है। लेकिन इसे थोड़ा और सरल बनाया जा सकता है:

WITH blah(n) AS (VALUES('999999969'),('000000089'),('666666689'),('15552555'))
SELECT n
FROM blah
WHERE EXISTS (
    SELECT x[1] 
    FROM regexp_matches(n, '(0{6}|1{6}|2{6}|3{6}|4{6}|5{6}|6{6}|7{6}|8{6}|9{6})', 'g') x;
)

आप उसी का उपयोग कर सकते हैं WHERE DELETE . में क्लॉज ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL क्वेरी वे मान लौटा रही है जो मेरे डेटाबेस में नहीं हैं

  2. अभिकथन त्रुटि पर:Django-आराम-फ्रेमवर्क

  3. plpgsql 'बनाएँ' पर या उसके निकट फ़ंक्शन सिंटैक्स त्रुटि बनाएँ

  4. PostgisDialect बनाम PostgreSQLDialect या दोनों?

  5. एक जेसन फ़ील्ड में कैसे खोजें जिसमें वाक्पटु के साथ वस्तुओं की एक सरणी हो