आप स्ट्रिंग्स की तुलना कैसे करते हैं ताकि तुलना तभी सही हो जब स्ट्रिंग्स में से प्रत्येक के मामले समान हों। उदाहरण के लिए:
Select * from a_table where attribute = 'k'
... 'K' की एक विशेषता के साथ एक पंक्ति लौटाएगा। मुझे यह व्यवहार नहीं चाहिए।
आप स्ट्रिंग्स की तुलना कैसे करते हैं ताकि तुलना तभी सही हो जब स्ट्रिंग्स में से प्रत्येक के मामले समान हों। उदाहरण के लिए:
Select * from a_table where attribute = 'k'
... 'K' की एक विशेषता के साथ एक पंक्ति लौटाएगा। मुझे यह व्यवहार नहीं चाहिए।
जवाबों:
Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS
की चाल चली।
इस सिंटैक्स का उपयोग करके आप उस विशेषता को केस संवेदी के रूप में भी परिवर्तित कर सकते हैं :
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS
अब आपकी खोज संवेदनशील होगी ।
यदि आप उस कॉलम केस को फिर से असंवेदनशील बनाना चाहते हैं , तो उपयोग करें
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS
आप स्तंभों को आसानी से वैरबिनरी (अधिकतम लंबाई) में परिवर्तित कर सकते हैं, दोषपूर्ण तुलना से बचने के लिए लंबाई अधिकतम होनी चाहिए, यह स्तंभ की लंबाई के रूप में लंबाई निर्धारित करने के लिए पर्याप्त है। ट्रिम कॉलम आपको वास्तविक मूल्य की तुलना करने में मदद करता है, सिवाय इसके कि आपके टेबल कॉलम में स्थान का कोई अर्थ और मूल्यवान है, यह एक सरल नमूना है और जैसा कि आप देख सकते हैं कि मैं कॉलम को ट्रिम कर देता हूं और फिर कन्वर्ट और तुलना करता हूं।:
CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))
उममीद है कि इससे मदद मिलेगी।
बस एक और विकल्प के रूप में आप इस तरह से कुछ का उपयोग कर सकते हैं:
SELECT *
FROM a_table
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')