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

उन पंक्तियों को लौटाएं जहां आईडी अर्धविराम में है और उपश्रेणी MSSQL से अलग स्ट्रिंग है

यह आपके डेटा को सामान्य बनाने के महत्व का एक और उदाहरण है।
एक कॉलम में एकाधिक डेटा बिंदुओं को रखना लगभग कभी भी सही डिज़ाइन नहीं होता है, और लगभग कभी भी मेरा मतलब लगभग 99.9999% नहीं होता है।

यदि आप अपने डेटाबेस को सामान्य नहीं कर सकते हैं, तो आप इस तरह के समाधान का उपयोग कर सकते हैं:

SELECT * 
FROM Projects p
WHERE EXISTS (
    SELECT Project_ID 
    FROM Feedback F WHERE ID = 268 
    AND Project_ID IS NOT NULL
    AND ';'+ F.Project_ID +';' LIKE '%;'+ CAST(p.Project_ID as varchar) +';%'
)

आप IN . का उपयोग नहीं कर सकते ऑपरेटर क्योंकि यह अल्पविराम द्वारा सीमित मूल्यों की एक सूची की अपेक्षा कर रहा है, जबकि आप इसे एक एकल मान के साथ आपूर्ति करने का प्रयास करते हैं जो अर्धविराम द्वारा सीमित है। भले ही Project_ID में मानों को अल्पविराम द्वारा सीमित कर दिया गया हो, फिर भी यह काम नहीं करेगा।

मेरे द्वारा ; जोड़ने का कारण Project_ID . के हर तरफ दोनों तालिकाओं में यह है कि इस तरह LIKE ऑपरेटर true लौटाएगा किसी भी स्थान के लिए यह Projects.Project_Id . ढूंढता है Feedback.Project_Id . के अंदर . आपको ; जोड़ना होगा Projects.Project_Id . पर LIKE . को रोकने के लिए true लौटाने के लिए जब आप एक संख्या की तलाश कर रहे हैं जो सीमांकित स्ट्रिंग में संख्याओं के लिए आंशिक मिलान है। 1;112;455 वाली स्ट्रिंग में 12 खोजने पर विचार करें - खोज मान (इस उदाहरण में 12) में सीमांकक जोड़े बिना LIKE ऑपरेटर true लौटाएगा ।




  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 सर्वर डेटाबेस में किसी ऑब्जेक्ट (तालिका, दृश्य, संग्रहीत प्रक्रिया) की स्कीमा कैसे बदलें - SQL सर्वर / TSQL ट्यूटोरियल भाग 28

  2. रिकॉर्ड का पहला उदाहरण चुनें

  3. आप SQL Server 2005 डेटा को Excel में कैसे स्थानांतरित या निर्यात करते हैं?

  4. अनुक्रम के आधार पर परिणामों को समूहीकृत करने के लिए SQL क्वेरी

  5. SQL सर्वर एजेंट अलर्ट