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

कैसे mysql में स्ट्रिंग से केवल अंक प्राप्त करने के लिए?

यदि स्ट्रिंग एक संख्या से शुरू होती है, फिर इसमें गैर-संख्यात्मक वर्ण होते हैं, तो आप CAST() फ़ंक्शन या इसे 0 . जोड़कर परोक्ष रूप से एक संख्यात्मक रूप में परिवर्तित करें :

SELECT CAST('1234abc' AS UNSIGNED); -- 1234
SELECT '1234abc'+0; -- 1234

किसी मनमाने . से नंबर निकालने के लिए स्ट्रिंग आप एक कस्टम जोड़ सकते हैं function जैसे यह :

DELIMITER $$

CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) 
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(50);
    DECLARE finNumber VARCHAR(50) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT 1;

    IF LENGTH(in_string) > 0 THEN
        WHILE(inti <= LENGTH(in_string)) DO
            SET sChar = SUBSTRING(in_string, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
END$$

DELIMITER ;

एक बार फ़ंक्शन परिभाषित हो जाने के बाद, आप इसे अपनी क्वेरी में उपयोग कर सकते हैं:

SELECT ExtractNumber("abc1234def") AS number; -- 1234


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL विदेशी कुंजी बाधाएं, कैस्केड हटाएं

  2. समूह से पहले MySQL आदेश

  3. PDO::__construct ():सर्वर ने क्लाइंट को अज्ञात चारसेट (255) भेजा। कृपया, डेवलपर्स को रिपोर्ट करें

  4. बहुभाषी डेटा रखने के लिए सबसे अच्छी डेटाबेस संरचना क्या है?

  5. धीरे-धीरे 90 मिलियन रिकॉर्ड पढ़ने के लिए हाइबरनेट के स्क्रॉल करने योग्य परिणामों का उपयोग करना