खोज…


वाक्य - विन्यास

  • वाइल्ड कार्ड% के साथ: SELECT * FROM [टेबल] जहां [कॉलम_नाम] जैसे '% मान%'

    वाइल्ड कार्ड विथ _: SELECT * FROM [टेबल] जहां [column_name] जैसा 'V_n%'

    [Charlist] के साथ वाइल्ड कार्ड: [F से [तालिका] जहां [कॉलम_नाम] का चयन करें, जैसे 'V [abc] nx '

टिप्पणियों

WHERE क्लॉज में LIKE स्थिति का उपयोग उन स्तंभ मानों की खोज के लिए किया जाता है जो दिए गए पैटर्न से मेल खाते हैं। दो वाइल्डकार्ड वर्णों का उपयोग करके पैटर्न बनाए जाते हैं

  • % (प्रतिशत प्रतीक) - शून्य या अधिक वर्णों का प्रतिनिधित्व करने के लिए उपयोग किया जाता है
  • _ (अंडरस्कोर) - एक एकल चरित्र का प्रतिनिधित्व करने के लिए उपयोग किया जाता है

मैच ओपन-एंडेड पैटर्न

एक स्ट्रिंग की शुरुआत या अंत (या दोनों) के लिए जोड़ा गया % वाइल्डकार्ड शुरुआत से पहले या मैच के पैटर्न के अंत के बाद किसी भी चरित्र के 0 या उससे अधिक की अनुमति देगा।

बीच में '%' का उपयोग करने से पैटर्न के दो हिस्सों के बीच 0 या अधिक अक्षरों का मिलान हो सकेगा।

हम इस कर्मचारी तालिका का उपयोग करने जा रहे हैं:

ईद fName LName फ़ोन नंबर प्रबंधक- DepartmentId वेतन चुनने की तारीख
1 जॉन जॉनसन 2468101214 1 1 400 23-03-2005
2 सोफी Amudsen 2479100211 1 1 400 2010/11/01
3 रोनी लोहार 2462544026 2 1 600 2015/06/08
4 जॉन सांचेज़ 2454124602 1 1 400 23-03-2005
5 Hilde डाली 2468021911 2 1 800 2000/01/01

कर्मचारी तालिका से 'पर स्ट्रिंग' वाले 'FName' वाले सभी रिकॉर्ड्स के बाद कथन।

SELECT * FROM Employees WHERE FName LIKE '%on%';
ईद fName LName फ़ोन नंबर प्रबंधक- DepartmentId वेतन चुनने की तारीख
3 N पर आर लोहार 2462544026 2 1 600 2015/06/08
4 जे पर सांचेज़ 2454124602 1 1 400 23-03-2005

निम्न कथन के बाद सभी रिकॉर्ड मेलनंबर से शुरू होते हैं, जो कर्मचारियों से '246' स्ट्रिंग के साथ शुरू होता है

SELECT * FROM Employees WHERE PhoneNumber LIKE '246%';
ईद fName LName फ़ोन नंबर प्रबंधक- DepartmentId वेतन चुनने की तारीख
1 जॉन जॉनसन 246 8101214 1 1 400 23-03-2005
3 रोनी लोहार 246 2544026 2 1 600 2015/06/08
5 Hilde डाली 246 8021911 2 1 800 2000/01/01

स्टेटमेंट के बाद कर्मचारियों से स्ट्रिंग '11' के साथ फोननंबर समाप्त होने के सभी रिकॉर्ड मेल खाते हैं।

SELECT * FROM Employees WHERE PhoneNumber LIKE '%11'
ईद fName LName फ़ोन नंबर प्रबंधक- DepartmentId वेतन चुनने की तारीख
2 सोफी Amudsen 24791002 11 1 1 400 2010/11/01
5 Hilde डाली 24680219 11 2 1 800 2000/01/01

सभी रिकॉर्ड जहां Fname 3 वर्ण कर्मचारी से 'n' है।

SELECT * FROM Employees WHERE FName LIKE '__n%';

(पहले 2 अक्षरों को छोड़ने के लिए 'n' से पहले दो अंडरस्कोर का उपयोग किया जाता है)

ईद fName LName फ़ोन नंबर प्रबंधक- DepartmentId वेतन चुनने की तारीख
3 रोनी लोहार 2462544026 2 1 600 2015/06/08
4 जॉन सांचेज़ 2454124602 1 1 400 23-03-2005

एकल चरित्र मैच

संरचित क्वेरी भाषा (SQL-SELECT) स्टेटमेंट, वाइल्डकार्ड वर्ण, प्रतिशत चिह्न (%) और अंडरस्कोर (_) के चयन को व्यापक बनाने के लिए उपयोग किया जा सकता है।

_ (अंडरस्कोर) वर्ण को किसी पैटर्न मैच में किसी एकल वर्ण के लिए वाइल्डकार्ड के रूप में उपयोग किया जा सकता है।

उन सभी कर्मचारियों को खोजें जिनके Fname 'j' से शुरू होते हैं और 'n' के साथ समाप्त होते हैं और Fname में ठीक 3 अक्षर होते हैं।

SELECT * FROM Employees WHERE FName LIKE 'j_n'

_ (अंडरस्कोर) वर्ण का उपयोग एक से अधिक बार वाइल्ड कार्ड से मिलान पैटर्न के रूप में भी किया जा सकता है।

उदाहरण के लिए, यह पैटर्न "जों", "जान", "जेन", आदि से मेल खाता होगा।

इन नामों को "jn", "john", "jordan", "justin", "jason", "julian", "jillian", "joann" नहीं दिखाया जाएगा क्योंकि हमारे प्रश्न में एक uncorecore का उपयोग किया जाता है और इसे ठीक से छोड़ सकते हैं एक वर्ण, इसलिए परिणाम 3 वर्ण Fname का होना चाहिए।

उदाहरण के लिए, यह पैटर्न "LaSt", "LoSt", "HaLt", आदि से मेल खाएगा।

SELECT * FROM Employees WHERE FName LIKE '_A_T'

रेंज या सेट से मिलान करें

निर्दिष्ट सीमा (उदाहरण: [af] ) या सेट (उदाहरण: [abcdef] ) के भीतर किसी भी एकल वर्ण का मिलान करें।

यह श्रेणी पैटर्न "गैरी" से मेल खाता है लेकिन "मैरी" नहीं:

SELECT * FROM Employees WHERE FName LIKE '[a-g]ary'

यह सेट पैटर्न "मेरी" से मेल खाएगा लेकिन "गैरी" से नहीं:

SELECT * FROM Employees WHERE Fname LIKE '[lmnop]ary'

श्रेणी या सेट से पहले ^ कैरेट को जोड़कर सीमा या सेट को भी नकारा जा सकता है:

यह श्रेणी पैटर्न "गैरी" से मेल नहीं खाएगा लेकिन "मेरी" से मेल खाएगा:

SELECT * FROM Employees WHERE FName LIKE '[^a-g]ary'

यह सेट पैटर्न "मेरी" से मेल नहीं खाएगा लेकिन "गैरी" से मेल खाएगा:

SELECT * FROM Employees WHERE Fname LIKE '[^lmnop]ary'

किसी भी बनाम मैच

किसी भी मैच:
कम से कम एक तार से मेल खाना चाहिए। इस उदाहरण में उत्पाद का प्रकार या तो 'इलेक्ट्रॉनिक्स', 'किताबें', या 'वीडियो' होना चाहिए।

SELECT *
FROM   purchase_table
WHERE  product_type LIKE ANY ('electronics', 'books', 'video');

सभी से मिलान करें (सभी आवश्यकताओं को पूरा करना चाहिए)।
इस उदाहरण में 'एकजुट राज्य' और 'लंदन' और 'पूर्वी सड़क' (विविधताओं सहित) का मिलान किया जाना चाहिए।

SELECT *
FROM   customer_table
WHERE  full_address LIKE ALL ('%united kingdom%', '%london%', '%eastern road%');

नकारात्मक चयन:
सभी वस्तुओं को बाहर करने के लिए सभी का उपयोग करें।
यह उदाहरण उन सभी परिणामों की पैदावार करता है जहाँ उत्पाद प्रकार 'इलेक्ट्रॉनिक्स' नहीं है, न कि 'किताबें' और न ही 'वीडियो'।

SELECT *
FROM   customer_table
WHERE  product_type NOT LIKE ALL ('electronics', 'books', 'video');

वर्णों की एक श्रृंखला खोजें

निम्नलिखित कथन FName वाले सभी रिकॉर्डों से मेल खाता है, जो ए से एफ से कर्मचारी तालिका से एक पत्र के साथ शुरू होता है।

SELECT * FROM Employees WHERE FName LIKE '[A-F]%'

LIKE-क्वेरी में ESCAPE स्टेटमेंट

यदि आप पाठ-खोज को LIKE -query के रूप में लागू करते हैं, तो आप आमतौर पर इसे इस तरह से करते हैं:

SELECT * 
FROM T_Whatever 
WHERE SomeField LIKE CONCAT('%', @in_SearchText, '%') 

हालाँकि, (इस तथ्य के अलावा कि आपको LIKE उपयोग तब नहीं करना चाहिए जब आप पूर्ण-खोज का उपयोग कर सकते हैं) यह तब समस्या पैदा करता है जब कोई व्यक्ति "50%" या "a_b" जैसे पाठ का इनपुट करता है।

इसलिए (पूर्ण-खोज पर स्विच करने के बजाय), आप LIKE -escape स्टेटमेंट का उपयोग करके उस समस्या को हल कर सकते हैं:

SELECT * 
FROM T_Whatever 
WHERE SomeField LIKE CONCAT('%', @in_SearchText, '%') ESCAPE '\'

इसका मतलब है कि \ अब एस्केप वर्ण के रूप में माना जाएगा। इस का अर्थ है, अब आप केवल आगे जोड़ते कर सकते हैं \ स्ट्रिंग के प्रत्येक वर्ण के लिए आप खोज, और परिणाम सही होने के लिए, तब भी जब उपयोगकर्ता की तरह विशेष वर्ण में प्रवेश करती है शुरू कर देंगे % या _

जैसे

string stringToSearch = "abc_def 50%";
string newString = "";
foreach(char c in stringToSearch) 
     newString += @"\" + c;
 
sqlCmd.Parameters.Add("@in_SearchText", newString); 
// instead of sqlCmd.Parameters.Add("@in_SearchText", stringToSearch);

नोट: उपरोक्त एल्गोरिथम केवल प्रदर्शन उद्देश्यों के लिए है। यह उन मामलों में काम नहीं करेगा जहां 1 अंगूर में कई अक्षर (utf-8) होते हैं। जैसे string stringToSearch = "Les Mise\u0301rables"; आपको प्रत्येक वर्ण के लिए नहीं, प्रत्येक अंगूर के लिए ऐसा करने की आवश्यकता होगी। यदि आप एशियाई / पूर्व-एशियाई / दक्षिण-एशियाई भाषाओं के साथ काम कर रहे हैं, तो आपको उपरोक्त एल्गोरिथ्म का उपयोग नहीं करना चाहिए। या यों कहें, अगर आप सही कोड शुरू करना चाहते हैं, तो आपको बस प्रत्येक ग्रेपमेक्स्टर के लिए ऐसा करना चाहिए।

ReverseString, एक C # साक्षात्कार-प्रश्न भी देखें

वाइल्डकार्ड वर्ण

वाइल्डकार्ड वर्ण SQL LIKE ऑपरेटर के साथ उपयोग किए जाते हैं। SQL वाइल्डकार्ड का उपयोग किसी तालिका के भीतर डेटा खोजने के लिए किया जाता है।

SQL में वाइल्डकार्ड हैं:%, _, [charlist], [^ charlist]

% - शून्य या अधिक वर्णों के लिए एक विकल्प

   Eg:  //selects all customers with a City starting with "Lo"
        SELECT * FROM Customers
        WHERE City LIKE 'Lo%';

       //selects all customers with a City containing the pattern "es"
      SELECT * FROM Customers
       WHERE City LIKE '%es%';

_ - एकल वर्ण के लिए एक विकल्प

Eg://selects all customers with a City starting with any character, followed by "erlin"
SELECT * FROM Customers
WHERE City LIKE '_erlin';

[charlist] - मिलान करने के लिए वर्णों की सेट और रेंज

Eg://selects all customers with a City starting with "a", "d", or "l"
SELECT * FROM Customers
WHERE City LIKE '[adl]%';

//selects all customers with a City starting with "a", "d", or "l"
SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

[^ चारलिस्ट] - केवल एक पात्र से मेल खाता है जो कोष्ठक के भीतर निर्दिष्ट नहीं है

Eg://selects all customers with a City starting with a character that is not "a", "p", or "l"
SELECT * FROM Customers
WHERE City LIKE '[^apl]%';

or

SELECT * FROM Customers
WHERE City NOT LIKE '[apl]%' and city like '_%';


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow