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

अनियमित प्रारूप के साथ एक स्ट्रिंग के बीच से वापसी संख्या

यह MySQL में एक गैर-तुच्छ कार्य है, नियमित अभिव्यक्ति मिलान वापस करने के लिए कोई अंतर्निहित कार्य नहीं है। लेकिन क्योंकि आप ठीक 13 अंकों की तलाश कर रहे हैं, आप ऐसा कुछ कर सकते हैं (जाहिर है कि इसे उन पदों की संख्या तक बढ़ा दें जिनकी आपको जांच करने की आवश्यकता है...

-- setup test
CREATE TABLE t (foo VARCHAR(30));
INSERT INTO t VALUES 
('1938420985390asdfih')
,('1234812934810dflkasd')
,('asdfasldkjfaasdfjasd')
,('asd;flkjaklsdf')
,('adfsdf1234073927357sdapjfas')
,('1/4sdikhsd')


SELECT CASE
       WHEN SUBSTR(foo,1,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,1,13)
       WHEN SUBSTR(foo,2,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,2,13)
       WHEN SUBSTR(foo,3,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,3,13)
       WHEN SUBSTR(foo,4,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,4,13)
       WHEN SUBSTR(foo,5,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,5,13)
       WHEN SUBSTR(foo,6,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,6,13)
       WHEN SUBSTR(foo,7,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,7,13)
       WHEN SUBSTR(foo,8,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,8,13)
       WHEN SUBSTR(foo,9,13) REGEXP '^[0-9]{13}$' THEN SUBSTR(foo,9,13)
       END AS digits
  FROM t

-------------------
1938420985390
1234812934810
(NULL)
(NULL)
1234073927357
(NULL) 

नहीं, यह सुंदर नहीं है। लेकिन आप इसे उचित लंबाई की एक स्ट्रिंग को प्रभावी ढंग से "स्कैन" करने के लिए विस्तारित करने में सक्षम होना चाहिए।

नोट:रेगुलर एक्सप्रेशन जाँच कर रहा है कि पूरे 13 वर्ण सबस्ट्रिंग में ठीक 13 वर्ण हैं, प्रत्येक वर्ण एक दशमलव अंक है (9 के माध्यम से 0)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इनपुट फ़ाइल प्रकार का उपयोग करके छवि संपादित करना

  2. MySQL में पिवट टेबल

  3. क्वार्टर से पीरियड्स तक MySQL ग्रुप

  4. क्या सी के लिए मानक MySQL कनेक्शन पूलिंग लाइब्रेरी है?

  5. MySQL एकाधिक अनुक्रमणिका बनाम बहु-स्तंभ अनुक्रमणिका खोज के लिए