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

SQL सर्वर में एक कॉलम में गैर-संख्यात्मक मान खोजें

ऐसे अवसर हो सकते हैं जहां आपको गैर-संख्यात्मक मानों के लिए कॉलम की जांच करने की आवश्यकता हो। उदाहरण के लिए, आप पाते हैं कि एक कॉलम एक varchar है कॉलम जब यह वास्तव में एक संख्यात्मक कॉलम होना चाहिए।

यह SQL सर्वर में ISNUMERIC() के साथ आसानी से किया जा सकता है समारोह।

नमूना डेटा

मान लीजिए हम एक varchar . के साथ एक टेबल बनाते हैं कॉलम, और डेटा इस प्रकार डालें:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
    c1 varchar(255)
);

INSERT INTO t1 (c1) VALUES 
    ('0'),
    ('1'),
    ('+1'),
    ('-1'),
    ('+1'),
    ('00.00'),
    ('73.45'),
    ('+73.45'),
    ('-73.45'),
    ('.246'),
    ('-.34e7'),
    ('12.e-3'),
    ('1.2e+4'),
    ('a'),
    ('9afc'),
    ('e7'),
    ('+e0'),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1;

परिणाम:

+-----------+
| c1        |
|-----------|
| 0         |
| 1         |
| +1        |
| -1        |
| +1        |
| 00.00     |
| 73.45     |
| +73.45    |
| -73.45    |
| .246      |
| -.34e7    |
| 12.e-3    |
| 1.2e+4    |
| a         |
| 9afc      |
| e7        |
| +e0       |
| Ten       |
| 5 Dollars |
+-----------+

उपरोक्त में से अधिकांश मान संख्यात्मक हैं, भले ही वे varchar . में हों कॉलम। निम्नलिखित उदाहरण गैर-संख्यात्मक मानों के लिए इस कॉलम की जांच करते हैं।

ISNUMERIC() समारोह

SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;

परिणाम:

+-----------+
| c1        |
|-----------|
| a         |
| 9afc      |
| e7        |
| +e0       |
| Ten       |
| 5 Dollars |
+-----------+

यहां, मैंने ISNUMERIC() . का उपयोग किया है नॉट इक्वल टू (<> .) के साथ फंक्शन ) ऑपरेटर उन मानों की जांच करने के लिए जो संख्यात्मक नहीं हैं।

कॉलम के varchar . होने का एक अच्छा कारण हो सकता है संख्यात्मक के बजाय। लेकिन यदि नहीं, तो मानों को उनके संख्यात्मक समकक्षों में परिवर्तित किया जाना चाहिए, और फिर कॉलम के डेटा प्रकार को एक संख्यात्मक प्रकार में बदला जाना चाहिए। यह डेटाबेस की डेटा अखंडता को बनाए रखने में मदद करेगा।

ऐसे मान ढूंढें जिनमें कोई संख्या न हो

हम उन सभी पंक्तियों को वापस करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं जिनमें संख्यात्मक मान नहीं हैं।

SELECT c1
FROM t1 
WHERE c1 NOT LIKE '%[0-9]%';

परिणाम:

+------+
| c1   |
|------|
| a    |
| Ten  |
+------+

यह पिछले उदाहरण से भिन्न परिणाम है, क्योंकि हम केवल उन सभी मानों की तलाश कर रहे हैं जिनमें शामिल नहीं है कोई संख्यात्मक डेटा। पिछले उदाहरण में, हम उन मानों की तलाश कर रहे थे जो संख्यात्मक नहीं हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में NOLOCK संकेत की अनिवार्यता और उपयोग

  2. SQL सर्वर (T-SQL) में डेटा प्रकारों की सूची कैसे लौटाएं

  3. मैं SQL सर्वर में संग्रहीत कार्यविधि से पैरामीटर की सूची कैसे प्राप्त कर सकता हूं?

  4. SQL सर्वर में समूह द्वारा समूह को समझें - SQL सर्वर / TSQL ट्यूटोरियल भाग 130

  5. SQL सर्वर में किसी तालिका में इष्टतम अद्वितीय पहचानकर्ता कैसे खोजें:sp_special_columns