अंदर नहीं मान खंड में


245

यह मुद्दा तब सामने आया जब मुझे अलग-अलग रिकॉर्ड मिले कि मैंने क्या सोचा था कि एक not in whereबाधा और एक का उपयोग करके समान प्रश्न थे left joinnot inबाधा में तालिका में एक शून्य मान (खराब डेटा) था, जो उस क्वेरी को 0 रिकॉर्ड की संख्या वापस करने के लिए प्रेरित करता था। मुझे समझ में क्यों आता है लेकिन मैं अवधारणा को पूरी तरह से समझने में कुछ मदद कर सकता हूं।

इसे सरलता से बताने के लिए, A A परिणाम क्यों लौटाता है, लेकिन B नहीं करता है?

A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)

यह SQL Server 2005 पर था। मैंने यह भी पाया कि कॉल करने set ansi_nulls offसे B का परिणाम वापस आ जाता है।

जवाबों:


283

क्वेरी A समान है:

select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null

चूंकि 3 = 3यह सच है, आपको एक परिणाम मिलता है।

क्वेरी बी इस प्रकार है:

select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null

जब ansi_nullsचालू 3 <> nullहै, तो UNKNOWN है, इसलिए विधेय UNKNOWN का मूल्यांकन करता है, और आपको कोई पंक्तियाँ नहीं मिलती हैं।

जब ansi_nullsबंद है, 3 <> nullसच है, तो विधेय सच का मूल्यांकन करता है, और आपको एक पंक्ति मिलती है।


11
क्या किसी ने कभी ध्यान दिलाया है कि परिवर्तन NOT INकी एक श्रृंखला में परिवर्तित करने <> andका अर्थ इस सेट में कुछ और नहीं है?
इयान बॉयड

8
@ इयान - ऐसा लगता है कि "A NOT IN ('X', 'Y')" वास्तव में SQL में A <> 'X' और A <> 'Y' के लिए एक उपनाम है। (मैं देख रहा हूं कि आपने खुद को stackoverflow.com/questions/3924694/… में खोजा , लेकिन यह सुनिश्चित करना चाहते थे कि आपकी आपत्ति इस प्रश्न में बताई गई है।)
रयान ओल्सन

मुझे लगता है कि यह बताता है कि SELECT 1 WHERE NULL NOT IN (SELECT 1 WHERE 1=0);मुझे खाली रिसेट के बजाय एक पंक्ति क्यों मिलती है जिसकी मुझे उम्मीद थी।
बिंकी

2
यह SQL सर्वर का एक बहुत ही खराब व्यवहार है, क्योंकि अगर यह "IS NULL" का उपयोग करके NULL- तुलना की अपेक्षा करता है, तो इसे उसी व्यवहार के लिए IN खंड में विस्तारित करना चाहिए, न कि मूर्खतापूर्ण रूप से गलत शब्दार्थ को स्वयं पर लागू करना चाहिए।
OzrenTkalcecKrznaric

@binki, आप क्वेरी निष्पादित करता है, तो रन यहाँ rextester.com/l/sql_server_online_compiler लेकिन काम नहीं करता है यहाँ रन sqlcourse.com/cgi-bin/interpreter.cgi
इस्तियाक अहमद

53

जब भी आप NULL का उपयोग करते हैं तो आप वास्तव में तीन-मान्य तर्क के साथ काम कर रहे होते हैं।

आपकी पहली क्वेरी का परिणाम यह है कि जहां क्लॉज का मूल्यांकन होता है:

    3 = 1 or 3 = 2 or 3 = 3 or 3 = null
which is:
    FALSE or FALSE or TRUE or UNKNOWN
which evaluates to 
    TRUE

दूसरा एक:

    3 <> 1 and 3 <> 2 and 3 <> null
which evaluates to:
    TRUE and TRUE and UNKNOWN
which evaluates to:
    UNKNOWN

UNKNOWN FALSE के समान नहीं है जिसे आप आसानी से कॉल करके देख सकते हैं:

select 'true' where 3 <> null
select 'true' where not (3 <> null)

दोनों प्रश्न आपको कोई परिणाम नहीं देंगे

यदि UNKNOWN FALSE के समान था, तो यह मानते हुए कि पहली क्वेरी आपको FALSE देगी, दूसरे को TRUE का मूल्यांकन करना होगा क्योंकि यह नॉट (FALSE) के समान होगा।
बात वह नहीं है।

SqlServerCentral पर इस विषय पर एक बहुत अच्छा लेख है

NULLs और थ्री-वैल्यूड लॉजिक का पूरा मुद्दा पहले थोड़ा भ्रमित हो सकता है लेकिन TSQL में सही प्रश्न लिखने के लिए इसे समझना आवश्यक है

एक अन्य लेख जो मैं सुझाऊंगा वह है एसक्यूएल एग्रीगेट फंक्शंस और NULL


33

NOT IN किसी अज्ञात मान के विरुद्ध तुलना करने पर 0 रिकॉर्ड देता है

चूंकि NULLएक अज्ञात है, एक NOT INक्वेरी जिसमें संभव मानों की सूची में एक s है NULLया NULLहमेशा 0रिकॉर्ड को लौटाएगा क्योंकि यह सुनिश्चित करने का कोई तरीका NULLनहीं है कि मूल्य का परीक्षण नहीं किया जा रहा है।


3
संक्षेप में यही उत्तर है। मैंने पाया कि बिना किसी उदाहरण के भी इसे समझना आसान है।
गोविंद राय

18

अशक्त की तुलना अपरिभाषित है, जब तक आप IS NULL का उपयोग नहीं करते हैं।

इसलिए, जब NULL (क्वेरी A) से 3 की तुलना की जाती है, तो यह अपरिभाषित हो जाता है।

Ie 'सही' का चयन करें जहाँ 3 इन (1,2, null) और 'सही' का चयन करें जहाँ 3 में नहीं (1,2, null)

उसी परिणाम का उत्पादन करेगा, जैसा कि नहीं (UNDEFINED) अभी भी अपरिभाषित है, लेकिन TRUE नहीं


महान बिंदु। 1 का चयन करें जहाँ null in (null) पंक्तियों (ansi) को वापस नहीं करती है।
क्रुकसेक

9

लेखन के समय इस प्रश्न का शीर्षक है

SQL बाधा और पूर्ण मान में नहीं

प्रश्न के पाठ से यह प्रतीत होता है कि समस्या SQL DML SELECTक्वेरी में थी, बजाय SQL DDL के CONSTRAINT

हालांकि, विशेष रूप से शीर्षक के शब्द को देखते हुए, मैं यह बताना चाहता हूं कि यहां दिए गए कुछ बयान संभावित रूप से भ्रामक बयान हैं, जिनके साथ (विरोधाभास)

जब विधेय का मूल्यांकन करने के लिए आप किसी भी पंक्तियों नहीं मिलता है।

हालाँकि यह SQL DML के लिए मामला है, जब बाधाओं को देखते हुए प्रभाव अलग होता है।

प्रश्न में विधेय से सीधे ली गई दो बाधाओं के साथ इस बहुत ही सरल तालिका पर विचार करें (और @Brbonnon द्वारा एक उत्कृष्ट उत्तर में संबोधित किया गया है):

DECLARE @T TABLE 
(
 true CHAR(4) DEFAULT 'true' NOT NULL, 
 CHECK ( 3 IN (1, 2, 3, NULL )), 
 CHECK ( 3 NOT IN (1, 2, NULL ))
);

INSERT INTO @T VALUES ('true');

SELECT COUNT(*) AS tally FROM @T;

@ ब्रानोन के उत्तर के अनुसार, पहला बाधा (उपयोग IN) TRUE का मूल्यांकन करता है और दूसरा बाधा (उपयोग NOT IN) UNKNOWN का मूल्यांकन करता है। हालाँकि , सम्मिलित सफल होता है! इसलिए, इस मामले में यह कहना सख्ती से सही नहीं है, "आपको कोई पंक्तियाँ नहीं मिलती हैं" क्योंकि हमें वास्तव में एक पंक्ति मिली है परिणामस्वरूप।

उपरोक्त प्रभाव वास्तव में एसक्यूएल -92 मानक के संबंध में सही है। SQL-92 युक्ति से निम्न अनुभाग की तुलना करें और इसके विपरीत करें

7.6 जहां खंड

का परिणाम T की उन पंक्तियों की तालिका है जिनके लिए खोज स्थिति का परिणाम सत्य है।

4.10 अखंडता की कमी

एक टेबल चेक बाधा संतुष्ट है अगर और केवल अगर निर्दिष्ट खोज स्थिति किसी तालिका की पंक्ति के लिए गलत नहीं है।

दूसरे शब्दों में:

SQL DML में, पंक्तियों को परिणाम से हटा दिया जाता है जब WHEREUNKNOWN का मूल्यांकन किया जाता है क्योंकि यह इस शर्त को पूरा नहीं करता है कि "सही है"।

SQL DDL (यानी अड़चनें) में, जब वे UNKNOWN का मूल्यांकन करते हैं तो पंक्तियों को परिणाम से हटाया नहीं जाता है क्योंकि यह इस शर्त को संतुष्ट करता है कि "गलत नहीं है"।

हालाँकि SQL DML और SQL DDL में प्रभाव क्रमशः विरोधाभासी लग सकता है, लेकिन UNKNOWN परिणाम देने में व्यावहारिक कारण है संदेह का 'लाभ' उन्हें एक बाधा को संतुष्ट करने की अनुमति देकर (अधिक सही ढंग से, उन्हें एक बाधा को संतुष्ट करने में विफल नहीं होने की अनुमति देता है) : इस व्यवहार के बिना, हर बाधा को स्पष्ट रूप से नल को संभालना होगा और यह एक भाषा डिजाइन के नजरिए से बहुत असंतोषजनक होगा (उल्लेख करने के लिए नहीं, कोडर के लिए एक सही दर्द!)

ps यदि आप इसे ऐसे तर्क का पालन करने के लिए चुनौतीपूर्ण मान रहे हैं जैसे "अज्ञात एक बाधा को संतुष्ट करने में विफल नहीं होता है" जैसा कि मैं इसे लिख रहा हूं, तो विचार करें कि आप SQL DDL में अशक्त स्तंभों और SQL में कुछ भी से बचने के द्वारा बस इस सब से दूर कर सकते हैं DML जो नल का उत्पादन करता है (जैसे बाहरी जोड़)!


मैंने ईमानदारी से नहीं सोचा था कि इस विषय पर कुछ कहना बाकी है। दिलचस्प।
जेमी इडे

2
@ जैमी आइडे: वास्तव में, मेरे पास इस विषय पर एक और उत्तर है: क्योंकि NOT IN (subquery)इसमें नल शामिल हैं अप्रत्याशित परिणाम दे सकते हैं, यह IN (subquery)पूरी तरह से बचने और हमेशा उपयोग करने के लिए आकर्षक है NOT EXISTS (subquery)(जैसा कि मैंने एक बार किया था!) ​​क्योंकि ऐसा लगता है कि यह हमेशा नल को सही ढंग से संभालता है। हालांकि, ऐसे मामले हैं जहां अप्रत्याशित परिणाम देता है NOT IN (subquery)जबकि NOT EXISTS (subquery)अप्रत्याशित परिणाम देता है! अगर मुझे इस विषय पर मेरे नोट्स मिल सकते हैं (अभी नोट्स की आवश्यकता है क्योंकि यह गैर-सहज है!) तो मुझे यह लिखने के लिए चारों ओर मिल सकता है, हालांकि निष्कर्ष समान है, हालांकि: शून्य से बचें!
onedaywhen

@onedaywhen मैं आपके दावे से भ्रमित हूं कि NULL को निरंतर व्यवहार (आंतरिक रूप से सुसंगत, युक्ति के अनुरूप नहीं) के लिए विशेष आवरण रखने की आवश्यकता होगी। क्या 4.10 को बदलने के लिए पर्याप्त नहीं होगा पढ़ने के लिए "एक टेबल चेक बाधा संतुष्ट है अगर और केवल अगर निर्दिष्ट खोज स्थिति सच है"?
DylanYoung

@DylanYoung: नहीं, युक्ति को एक महत्वपूर्ण कारण के रूप में देखा जाता है: SQL तीन मान तर्क से ग्रस्त है, जहां वे मान हैं TRUE, FALSEऔर UNKNOWN। मुझे लगता है कि 4.10 पढ़ सकते हैं, "एक टेबल चेक बाधा संतुष्ट है अगर और केवल अगर निर्दिष्ट खोज स्थिति TRUE या UNKNOWN तालिका की प्रत्येक पंक्ति के लिए है" - मेरे वाक्य के अंत में परिवर्तन पर ध्यान दें - जिसे आपने छोड़ दिया है - - "किसी भी" से "सभी के लिए" के लिए। मुझे तार्किक मूल्यों को भुनाने की आवश्यकता महसूस होती है क्योंकि प्राकृतिक भाषा में 'सत्य' और 'असत्य' का अर्थ निश्चित रूप से शास्त्रीय दो-मूल्यवान तर्क का उल्लेख करना चाहिए।
onedaywhen

1
विचार करें: CREATE TABLE T ( a INT NOT NULL UNIQUE, b INT CHECK( a = b ) );- यहाँ आशय यह है कि bया तो बराबर होना चाहिए या aअशक्त होना चाहिए । यदि किसी बाधा को संतुष्ट होने के लिए TRUE का परिणाम प्राप्त करना था, तो हमें स्पष्ट रूप से नल को संभालने के लिए बाधा को बदलने की आवश्यकता होगी CHECK( a = b OR b IS NULL )। इस प्रकार, प्रत्येक बाधा में ...OR IS NULLप्रत्येक अशक्त स्तंभ के लिए उपयोगकर्ता द्वारा तर्क जोड़ा जाना आवश्यक है : अधिक जटिलता, अधिक बग जब वे ऐसा करना भूल गए, आदि तो मुझे लगता है कि SQL मानक समिति सिर्फ व्यावहारिक होने की कोशिश कर रही थी।
onedaywhen

7

ए में, सेट के प्रत्येक सदस्य के खिलाफ समानता के लिए 3 का परीक्षण किया जाता है, उपज (FALSE, FALSE, TRUE, UNKNOWN)। चूंकि तत्वों में से एक TRUE है, इसलिए स्थिति TRUE है। (यह भी संभव है कि कुछ शॉर्ट-सर्किटिंग यहां होती है, इसलिए यह वास्तव में पहले ट्रू हिट के रूप में जल्द ही बंद हो जाता है और कभी भी 3 = NULL का मूल्यांकन नहीं करता है।)

बी में, मुझे लगता है कि यह स्थिति का मूल्यांकन नहीं कर रहा है (3 इन (1,2, अशक्त))। सेट पैदावार (FALSE, FALSE, UNKNOWN) के खिलाफ समानता के लिए 3 का परीक्षण, जो UNKNOWN के लिए एकत्रित है। नहीं (UNKNOWN) पैदावार UNKNOWN करता है। तो कुल मिलाकर स्थिति की सच्चाई अज्ञात है, जिसे अंत में अनिवार्य रूप से एफएएलएसई के रूप में माना जाता है।


7

यह उन उत्तरों से निष्कर्ष निकाला जा सकता है जो NOT IN (subquery)नल को सही ढंग से नहीं संभालते हैं और उन्हें इसके पक्ष में नहीं जाना चाहिए NOT EXISTS। हालांकि, ऐसा निष्कर्ष समय से पहले हो सकता है। निम्नलिखित परिदृश्य में, क्रिस डेट (डेटाबेस प्रोग्रामिंग और डिज़ाइन, वॉल्यूम 2 ​​नं 9, सितंबर 1989) को श्रेय दिया जाता है, यह है NOT INकि नल सही ढंग से संभालता है और इसके बजाय सही परिणाम देता है NOT EXISTS

spआपूर्तिकर्ताओं ( sno) का प्रतिनिधित्व करने के लिए एक तालिका पर विचार करें जो pnoमात्रा ( qty) में भागों ( ) की आपूर्ति करने के लिए जाने जाते हैं । वर्तमान में तालिका में निम्न मान हैं:

      VALUES ('S1', 'P1', NULL), 
             ('S2', 'P1', 200),
             ('S3', 'P1', 1000)

ध्यान दें कि मात्रा अशक्त है अर्थात इस तथ्य को रिकॉर्ड करने में सक्षम होने के लिए कि एक आपूर्तिकर्ता को भागों की आपूर्ति करने के लिए जाना जाता है, भले ही वह किस मात्रा में ज्ञात न हो।

कार्य उन आपूर्तिकर्ताओं को ढूंढना है जो आपूर्ति भाग संख्या 'P1' के रूप में जाने जाते हैं, लेकिन 1000 की मात्रा में नहीं।

NOT INआपूर्तिकर्ता 'S2' को केवल सही पहचानने के लिए निम्नलिखित उपयोग करता है:

WITH sp AS 
     ( SELECT * 
         FROM ( VALUES ( 'S1', 'P1', NULL ), 
                       ( 'S2', 'P1', 200 ),
                       ( 'S3', 'P1', 1000 ) )
              AS T ( sno, pno, qty )
     )
SELECT DISTINCT spx.sno
  FROM sp spx
 WHERE spx.pno = 'P1'
       AND 1000 NOT IN (
                        SELECT spy.qty
                          FROM sp spy
                         WHERE spy.sno = spx.sno
                               AND spy.pno = 'P1'
                       );

हालाँकि, नीचे दी गई क्वेरी समान सामान्य संरचना का उपयोग करती है, लेकिन NOT EXISTSपरिणाम में आपूर्तिकर्ता 'S1' को गलत तरीके से शामिल करता है (अर्थात जिसके लिए मात्रा शून्य है):

WITH sp AS 
     ( SELECT * 
         FROM ( VALUES ( 'S1', 'P1', NULL ), 
                       ( 'S2', 'P1', 200 ),
                       ( 'S3', 'P1', 1000 ) )
              AS T ( sno, pno, qty )
     )
SELECT DISTINCT spx.sno
  FROM sp spx
 WHERE spx.pno = 'P1'
       AND NOT EXISTS (
                       SELECT *
                         FROM sp spy
                        WHERE spy.sno = spx.sno
                              AND spy.pno = 'P1'
                              AND spy.qty = 1000
                      );

तो NOT EXISTSक्या यह चांदी की गोली नहीं है जो दिखाई दे सकती है!

बेशक, समस्या का स्रोत नल की उपस्थिति है, इसलिए उन नल को समाप्त करने के लिए 'वास्तविक' समाधान है।

यह दो तालिकाओं का उपयोग करके (अन्य संभावित डिजाइनों के बीच) प्राप्त किया जा सकता है:

  • sp आपूर्तिकर्ताओं भागों की आपूर्ति करने के लिए जाना जाता है
  • spq आपूर्तिकर्ताओं को ज्ञात मात्रा में भागों की आपूर्ति करने के लिए जाना जाता है

वहाँ spqसंदर्भ नहीं होना चाहिए जहाँ संदर्भ हो sp

फिर परिणाम 'माइनस' रिलेशनल ऑपरेटर ( EXCEPTस्टैंडर्ड SQL में कीवर्ड होने ) का उपयोग करके प्राप्त किया जा सकता है

WITH sp AS 
     ( SELECT * 
         FROM ( VALUES ( 'S1', 'P1' ), 
                       ( 'S2', 'P1' ),
                       ( 'S3', 'P1' ) )
              AS T ( sno, pno )
     ),
     spq AS 
     ( SELECT * 
         FROM ( VALUES ( 'S2', 'P1', 200 ),
                       ( 'S3', 'P1', 1000 ) )
              AS T ( sno, pno, qty )
     )
SELECT sno
  FROM spq
 WHERE pno = 'P1'
EXCEPT 
SELECT sno
  FROM spq
 WHERE pno = 'P1'
       AND qty = 1000;

1
हे भगवान। वास्तव में इसे लिखने के लिए धन्यवाद .... यह मुझे पागल कर रहा था ..
गोविंद राय

6

अशक्त डेटा का अभाव और अनुपस्थिति दर्शाता है, यह अज्ञात है, कुछ भी नहीं का डेटा मान नहीं है। प्रोग्रामिंग बैकग्राउंड के लोगों के लिए यह भ्रमित करना बहुत आसान है क्योंकि सी प्रकार की भाषा में जब पॉइंटर्स नल का उपयोग करना वास्तव में कुछ भी नहीं है।

इसलिए पहले मामले में 3 वास्तव में (1,2,3, अशक्त) के सेट में है, इसलिए सही लौटा है

दूसरे में हालांकि आप इसे कम कर सकते हैं

'सही' चुनें जहां 3 नहीं (शून्य)

इसलिए कुछ भी नहीं लौटाया जाता है क्योंकि पार्सर सेट के बारे में कुछ नहीं जानता है कि आप इसकी तुलना किससे कर रहे हैं - यह एक खाली सेट नहीं बल्कि एक अज्ञात सेट है। (1, 2, null) का उपयोग करने से मदद नहीं मिलती है क्योंकि (1,2) सेट स्पष्ट रूप से गलत है, लेकिन फिर आप अनजान के खिलाफ 'anding' कर रहे हैं, जो अज्ञात है।


6

यदि आप नल के लिए उपकुंजी containg NULLs जस्टचेक के लिए NOT IN में फ़िल्टर करना चाहते हैं

SELECT blah FROM t WHERE blah NOT IN
        (SELECT someotherBlah FROM t2 WHERE someotherBlah IS NOT NULL )

मुझे बाहरी जॉइन क्वेरी के साथ समस्या थी जो विशेष स्थितियों में किसी भी रिकॉर्ड को नहीं लौटाती थी, इसलिए नल और दोनों के अस्तित्व के लिए इस समाधान की जांच की और इसने मेरे लिए काम किया, और अगर मेरे द्वारा किए गए अन्य मुद्दों का उल्लेख यहां किया गया था, तो बहुत बहुत धन्यवाद।
क्यूमास्टर

1

यह लड़के के लिए है:

select party_code 
from abc as a
where party_code not in (select party_code 
                         from xyz 
                         where party_code = a.party_code);

यह ansi सेटिंग्स की परवाह किए बिना काम करता है


मूल प्रश्न के लिए: B: 'सही' का चयन करें, जहाँ 3 नहीं (1, 2, अशक्त) शून्य को हटाने का एक तरीका होना चाहिए, उदाहरण के लिए 'सही' का चयन करें जहाँ 3 नहीं (1, 2, इसनुल (शून्य, 0) ) समग्र तर्क है, यदि NULL कारण है, तो क्वेरी में कुछ चरणों में NULL मान निकालने का एक तरीका खोजें।

एक पार्टी के रूप में abc से पार्टी_कोड का चयन करें, जहां पार्टी_कोड नहीं है (चयन करें पार्टी_कोड को xyz से, जहां पार्टी_कोड शून्य नहीं है) लेकिन सौभाग्य यदि आप फ़ील्ड को भूल गए हैं, जो अक्सर अनुमति देता है, तो यह है

1

एसक्यूएल सत्य मूल्यों के लिए तीन-मूल्यवान तर्क का उपयोग करता है। INक्वेरी की उम्मीद परिणाम पैदा करता है:

SELECT * FROM (VALUES (1), (2)) AS tbl(col) WHERE col IN (NULL, 1)
-- returns first row

लेकिन NOTपरिणाम जोड़ना उल्टा नहीं है:

SELECT * FROM (VALUES (1), (2)) AS tbl(col) WHERE NOT col IN (NULL, 1)
-- returns zero rows

ऐसा इसलिए है क्योंकि उपरोक्त क्वेरी निम्न के बराबर है:

SELECT * FROM (VALUES (1), (2)) AS tbl(col) WHERE NOT (col = NULL OR col = 1)

यहां बताया गया है कि खंड का मूल्यांकन कैसे किया जाता है:

| col | col = NULL (1) | col = 1 | col = NULL OR col = 1 | NOT (col = NULL OR col = 1) |
|-----|----------------|---------|-----------------------|-----------------------------|
| 1   | UNKNOWN        | TRUE    | TRUE                  | FALSE                       |
| 2   | UNKNOWN        | FALSE   | UNKNOWN (2)           | UNKNOWN (3)                 |

नोटिस जो:

  1. तुलना में NULLपैदावार शामिल हैUNKNOWN
  2. ORअभिव्यक्ति जहां ऑपरेंड में से कोई भी कर रहे हैं TRUEऔर कम से कम एक संकार्य है UNKNOWNपैदावार UNKNOWN( रेफरी )
  3. NOTकी UNKNOWNपैदावार UNKNOWN( रेफरी )

आप उपरोक्त उदाहरण को दो से अधिक मानों (जैसे NULL, 1 और 2) तक बढ़ा सकते हैं, लेकिन परिणाम समान होगा: यदि NULLकोई मान एक है तो कोई भी पंक्ति मेल नहीं खाएगी।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.