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

MS SQL 2012 में पूर्ण पाठ खोज का उपयोग करके किसी विशिष्ट पाठ को फ़िल्टर करके पंक्तियों को कैसे खोजें?

मुझे नहीं लगता कि पूर्ण पाठ खोज आपकी मदद करेगा। ऐसा लगता है कि आप तकनीकी शब्दों जैसे /1/ . जैसे किसी खंड की तलाश कर रहे हैं ।

एक्सएमएल के लिए इसे आजमाएं

 DECLARE @SearchFor VARCHAR(100)='1';

 SELECT * 
 FROM SettingsData
 WHERE xmldata.exist(N'//*[contains(text()[1],sql:variable("@SearchFor"))]')=1;

यह किसी भी नोड के आंतरिक text() . की जांच करेगा यदि इसमें खोज वाक्यांश है। लेकिन 1 . के साथ कोई भी मान अंदर पाया जाता है (उदाहरण के लिए कोई भी असंबंधित संख्या जिसमें 1 . है कहीं।) आप text()="1" . की खोज कर सकते हैं और contains . का प्रदर्शन करें केवल तभी जब स्ट्रिंग की लंबाई एक निश्चित न्यूनतम से अधिक हो।

कुछ इस तरह

WHERE xmldata.exist(N'//*[text()[1]=sql:variable("@SearchFor") or(string-length(text()[1])>=3 and contains(text()[1],concat("/",sql:variable("@SearchFor"),"/")))]')=1;

जेसन है - अब तक - एक स्ट्रिंग से ज्यादा कुछ नहीं और इसे पार्स किया जाना चाहिए। v2016 के साथ Microsoft ने JSON समर्थन पेश किया, लेकिन आप v2012 पर हैं। LIKE . के साथ समस्या JSON-स्ट्रिंग पर खोज हो सकती है, कि आप 1 को किसी तत्व के नाम के हिस्से के रूप में भी पाएंगे। बाकी ऊपर जैसा है...

 SELECT *
 FROM SettingsData
 WHERE jsondata LIKE '%' + @SearchFor + '%';



  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 सर्वर में पंक्ति-स्तरीय सुरक्षा का परिचय

  2. बड़े पैमाने पर ORM (ExecuteNonQuery), UdtTypeName त्रुटि के माध्यम से SQL Server 2008 रिकॉर्ड w/स्थानिक डेटा प्रकारों को अद्यतन करना

  3. एसक्यूएल सर्वर 2005 में रिकर्सिव फ़ंक्शन?

  4. .sdf डेटाबेस को .mdf डेटाबेस में बदलें

  5. SQL सर्वर 2019 (ज्ञात बग) में मूल रूप से संकलित संग्रहीत प्रक्रिया को निष्पादित करते समय "आंतरिक कनेक्शन घातक त्रुटि"