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

isnumeric () PostgreSQL के साथ

जैसा कि आपने देखा होगा, रेगेक्स-आधारित पद्धति को सही ढंग से करना लगभग असंभव है। उदाहरण के लिए, आपका परीक्षण कहता है कि 1.234e-5 वैध संख्या नहीं है, जब यह वास्तव में है। साथ ही, आप ऋणात्मक संख्याओं से चूक गए। क्या होगा यदि कोई चीज़ किसी संख्या की तरह दिखती है, लेकिन जब आप उसे संग्रहीत करने का प्रयास करते हैं तो यह अतिप्रवाह का कारण बन सकती है?

इसके बजाय, मैं ऐसा फ़ंक्शन बनाने की अनुशंसा करता हूं जो वास्तव में NUMERIC . पर डालने का प्रयास करता है (या FLOAT यदि आपके कार्य को इसकी आवश्यकता है) और TRUE returns लौटाता है या FALSE इस पर निर्भर करता है कि यह कलाकार सफल हुआ या नहीं।

यह कोड पूरी तरह से फ़ंक्शन का अनुकरण करेगा ISNUMERIC() :

CREATE OR REPLACE FUNCTION isnumeric(text) RETURNS BOOLEAN AS $$
DECLARE x NUMERIC;
BEGIN
    x = $1::NUMERIC;
    RETURN TRUE;
EXCEPTION WHEN others THEN
    RETURN FALSE;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;

इस फ़ंक्शन को आपके डेटा पर कॉल करने पर निम्न परिणाम मिलते हैं:

WITH test(x) AS ( VALUES (''), ('.'), ('.0'), ('0.'), ('0'), ('1'), ('123'),
  ('123.456'), ('abc'), ('1..2'), ('1.2.3.4'), ('1x234'), ('1.234e-5'))
SELECT x, isnumeric(x) FROM test;

    x     | isnumeric
----------+-----------
          | f
 .        | f
 .0       | t
 0.       | t
 0        | t
 1        | t
 123      | t
 123.456  | t
 abc      | f
 1..2     | f
 1.2.3.4  | f
 1x234    | f
 1.234e-5 | t
 (13 rows)

यह न केवल अधिक सही और पढ़ने में आसान है, बल्कि यदि डेटा वास्तव में एक संख्या है तो यह तेजी से काम भी करेगा।



  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. सभी मापदंडों के साथ एनएसआईएस के साथ पोस्टग्रेज कैसे स्थापित करें?

  3. PostgreSQL में गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

  4. मैं PostgreSQL तालिका में पंक्तियों की गिनती कैसे तेज करूं?

  5. PostgreSQL में सर्वर-साइड प्रोग्रामिंग का अवलोकन