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

स्ट्रिंग को int में linq में बड़े डेटाबेस पर इकाइयों में कनवर्ट करना

मुझे लगता है कि स्ट्रिंग के रूप में तुलना करना काफी सुरक्षित है, जब तक कि आपके पास वर्ष <1000 या> 9999 न हों:

... dr.stringYear.CompareTo(myNumberString) > 0

EF इसका अनुवाद SQL विधेय जैसे

. में करता है
WHERE [alias].[stringYear] > @p

जो SQL में संभव है लेकिन C# में नहीं।

एक फायदा यह होगा कि stringYear . पर कोई भी इंडेक्स एक निष्पादन योजना में प्रयोग करने योग्य हो सकता है। कनवर्ट कर रहा है stringYear to number किसी भी इंडेक्स को हटा देता है।

यह विधि तब भी उपयोगी होती है जब स्ट्रिंग कॉलम में जंजीर स्ट्रिंग मान होते हैं। ऐसे मामले में विधेय को लंबाई के साथ जोड़ा जाना चाहिए। उदाहरण के लिए, उन सभी इकाइयों को खोजने के लिए जहां पूर्णांक के रूप में कोई भी संख्यात्मक स्ट्रिंग कुछ संदर्भ मान से अधिक है

var len = myNumberString.Lenght;

var query = 
    from row in context.LegacyTable
    where row.NumericString.CompareTo(myNumberString) > 0
       && row.NumericString.Length >= len
    select row; 

तब क्वेरी इंजन लंबाई की तुलना के लिए अनुक्रमणिका का उपयोग नहीं कर सकता है, लेकिन यह > के लिए ऐसा करने में सक्षम हो सकता है तुलना।



  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. विजुअल फॉक्सप्रो डेटाबेस को SQL सर्वर डेटाबेस में कैसे बदलें

  3. व्युत्पन्न कॉलम में स्ट्रिंग दिनांक आयात करें

  4. .NET:XML दस्तावेज़ को SQL सर्वर में कैसे सम्मिलित करें?

  5. SQL सर्वर डेटाबेस में सिस्टम तालिकाओं की संख्या की गणना करने के 3 तरीके