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

SQL सर्वर 2008 फ़ंक्शन के लिए पैरामीटर के रूप में डेटाटाइप पास कर रहा है

खैर, कोई TRY_CONVERT() नहीं है या TRY_CAST() एसक्यूएल-सर्वर 2008 में, लेकिन आप एक्सएमएल की आंतरिक कास्ट को अशक्त प्रकारों में उपयोग कर सकते हैं।

इसे आजमाएं

DECLARE @tbl TABLE(SomeInt VARCHAR(100));
INSERT INTO @tbl VALUES('123')
                      ,('blah') --bad data
SELECT t.*
      ,CAST('' AS XML).value('sql:column("t.SomeInt") cast as xs:int?','int')
FROM @tbl t;

थोड़ा सा हैक... लेकिन किसी तरह सुंदर;-)

कुछ स्पष्टीकरण

CAST('' AS XML) असली XML प्राप्त करने के लिए बस एक तरकीब है एक्सएमएल के मूल तरीकों का उपयोग करने के लिए। sql:column() एक XQuery है -फंक्शन, जो आपको एक सेट के कॉलम को XQuery . में शामिल करने की अनुमति देता है (sql:variable का उपयोग करें चर के लिए)।

cast as xs:int? स्ट्रिंग को इंट-वैल्यू के रूप में पार्स करने का प्रयास करेगा और यदि यह काम नहीं करता है तो NULL लौटाएगा।

सीमा है:यह हमेशा आपके सिस्टम के डिफ़ॉल्ट (TRY_CAST के समान) का उपयोग करेगा ) TRY_CONVERT . के साथ तीसरे पैरामीटर के साथ आउटपुट पर आपका अधिक नियंत्रण होगा...

संकेत:XQuery/Xpath सख्ती से केस-संवेदी है। तो xs:dateTime? . है , लेकिन आपको xs:datetime . के साथ एक त्रुटि मिलेगी ...




  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 सर्वर में BETWEEN ऑपरेटर का उपयोग कैसे करें

  3. आप SQL सर्वर में कॉलम के डेटाटाइप को कैसे बदलते हैं?

  4. SQL सर्वर में केवल संख्यात्मक मान कैसे लौटाएं?

  5. मॉड्यूल नॉटफाउंड त्रुटि:pyodbc को py स्क्रिप्ट में आयात करते समय 'pyodbc' नाम का कोई मॉड्यूल नहीं है