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

त्रुटि प्राप्त करना:SQL में डेटा प्रकार nvarchar को संख्यात्मक में परिवर्तित करने में त्रुटि

आमतौर पर string . पास करने में कोई समस्या नहीं होती है एक पैरामीटर के लिए जो संख्यात्मक है, जब तक कि SQL सर्वर स्ट्रिंग की सामग्री को एक संख्यात्मक मान में परिवर्तित करने में सक्षम है। अगर वह काम नहीं करता है, तो आपको यह त्रुटि मिलती है।

उदाहरण के लिए:पासिंग "Hello" एक पैरामीटर के लिए जो संख्यात्मक है, आपको एक त्रुटि मिलती है। पासिंग "1234" तुम नहीं। कृपया ध्यान दें कि रिक्त स्ट्रिंग या रिक्त स्थान वाली स्ट्रिंग को संख्यात्मक मान में परिवर्तित नहीं किया जा सकता है!

हालांकि, यह कहा जाना चाहिए कि ऐसा करना अच्छी शैली नहीं है। आपको यह सुनिश्चित करना चाहिए कि समस्याओं से बचने के लिए आपके द्वारा अपने एप्लिकेशन में उपयोग किए जाने वाले प्रकार डेटाबेस के प्रकारों से मेल खाते हैं। हो सकता है कि आपको string की आवश्यकता क्यों है, इस बारे में कुछ और विवरण आपके आवेदन के प्रकार मदद कर सकते हैं।

1 संपादित करें
क्वेरी के लिए पैरामीटर को वैकल्पिक बनाने के लिए, जाने का तरीका निम्नलिखित होगा:

  1. वैकल्पिक पैरामीटर जैसे WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) को अनुमति देने के लिए अपना SQL कथन बदलें ।
  2. @Raumklasse_ID न जोड़ें पैरामीटर अगर यह वैकल्पिक होना चाहिए या मान जोड़ें DBNull.Value

आपको वास्तव में अपनी string changing को बदलने पर विचार करना चाहिए गुणों को अशक्त प्रकारों जैसे int?

2 संपादित करें
इस प्रकार आपका कोड मेरे द्वारा संपादित 1 में सुझाए गए परिवर्तनों को लागू करते हुए दिखाई दे सकता है:

using (SqlCommand cmd = new SqlCommand(@"SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID FROM RAUM r WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) OR STADT_ID = ISNULL(@Stadt_ID, STADT_ID) OR GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID) OR REGION_ID = ISNULL(@Region_ID, REGION_ID)", con)) 
{
    con.Open();
    if (!String.IsNullOrWhitespace(RAUMKLASSE_ID))
        cmd.Parameters.AddWithValue("@Raumklasse_ID", RAUMKLASSE_ID);
    else
        cmd.Parameters.AddWithValue("@Raumklasse_ID", DBNull.Value);
    if (!String.IsNullOrWhitespace(STADT_ID))
        cmd.Parameters.AddWithValue("@Stadt_ID", STADT_ID);
    else
        cmd.Parameters.AddWithValue("@Stadt_ID", DBNull.Value);
    if (!String.IsNullOrWhitespace(GEBAEUDE_ID))
        cmd.Parameters.AddWithValue("@Gebaeude_ID", GEBAEUDE_ID);
    else
        cmd.Parameters.AddWithValue("@Gebaeude_ID", DBNull.Value);
    if (!String.IsNullOrWhitespace(REGION_ID))
        cmd.Parameters.AddWithValue("@Region_ID", REGION_ID);
    else
        cmd.Parameters.AddWithValue("@Region_ID", DBNull.Value);
    ...
}


  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. SQL सर्वर 2008 IIF कथन सक्षम नहीं लगता है

  5. ट्रिगर नेस्टिंग स्तर पार हो गया?