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

SQL सर्वर में संग्रहीत प्रक्रिया में पास किए गए VARCHAR को कैसे पार्स करें?

यदि संभव हो, तो इस तरह की चीजों के लिए varchar का उपयोग न करें, तालिका का उपयोग करें। मूल्यवान पैरामीटर इसके बजाय।

तालिकाबद्ध मान पैरामीटर का उपयोग करने के लिए आपको पहले एक उपयोगकर्ता परिभाषित तालिका प्रकार घोषित करना चाहिए:

CREATE TYPE IntList As Table
(
    IntValue int
)

फिर nvarchar के बजाय इस चर को स्वीकार करने के लिए अपनी संग्रहीत कार्यविधि को बदलें:

create proc Sp_ReturnPrdoucts
    @BrandIds dbo.IntList readonly -- Note: readonly is a must!
AS
BEGIN

SELECT * 
FROM tbl_Products as p 
join tbl_Brands b on p.ProductBrandId=b.BrandId 
join @BrandIds ON(b.BrandId = IntValue)

END

समस्या यह है कि IN() ऑपरेटर अल्पविराम से अलग किए गए चरों की सूची की अपेक्षा करता है, जबकि आप एक एकल चर प्रदान करते हैं कि इसका मान अल्पविराम से अलग की गई स्ट्रिंग है।

यदि आप तालिका मान पैरामीटर का उपयोग नहीं कर सकते हैं, तो आप वर्चर के मान को इनट्स की तालिका में बदलने के लिए एसक्यूएल में एक स्ट्रिंग स्प्लिटिंग फ़ंक्शन का उपयोग कर सकते हैं। वहाँ कई स्प्लिटर्स हैं, मैं इस लेख को पढ़ने की सलाह दूंगा। ए> किसी एक को चुनने से पहले।



  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. @@ DATEFIRST - SQL सर्वर में सप्ताह का पहला दिन प्राप्त करें

  5. SQL:पूर्णनाम फ़ील्ड से प्रथम, मध्य और अंतिम नाम पार्स करें