खोज…


पैरामीटर

पैरामीटर विवरण
character_expression आपके डेटा में मौजूदा स्ट्रिंग
शुरुआत की स्थिति length हटाने के लिए character_expression में स्थिति और उसके बाद replacement_string डालें
लंबाई से हटाने के लिए वर्णों की संख्या character_expression
replacement_string पात्रों के अनुक्रम में डालने के लिए character_expression

मूल चरित्र प्रतिस्थापन के साथ STUFF ()

STUFF() फ़ंक्शन निर्दिष्ट स्ट्रिंग को पहले वर्णों को हटाकर एक स्ट्रिंग को दूसरे स्ट्रिंग में सम्मिलित करता है। निम्न उदाहरण, "Svr" को हटाता है और इसे "सर्वर" से बदल देता है। यह प्रतिस्थापन के start_position और length को निर्दिष्ट करके होता है।

SELECT STUFF('SQL Svr Documentation', 5, 3, 'Server')

इस उदाहरण को निष्पादित करने से SQL Svr Documentation. बजाय SQL Server Documentation वापस आ जाएगा SQL Svr Documentation.

एक्सएमएल के लिए एकाधिक पंक्तियों से मूल्यों को सम्‍मिलित करने के लिए उपयोग करना

FOR XML फ़ंक्शन के लिए एक सामान्य उपयोग कई पंक्तियों के मूल्यों को संक्षिप्त करना है।

यहां ग्राहक तालिका का उपयोग करके एक उदाहरण दिया गया है:

SELECT 
    STUFF( (SELECT ';' + Email
        FROM Customers 
        where (Email is not null and Email <> '')
        ORDER BY Email ASC 
        FOR XML PATH('')), 
    1, 1, '')

ऊपर दिए गए उदाहरण में, FOR XML PATH('')) लिए ईमेल पते का उपयोग करने के लिए उपयोग किया जा रहा है ; सीमांकक चरित्र के रूप में। इसके अलावा, STUFF का उद्देश्य अग्रणी को हटाना है ; उपजी स्ट्रिंग से। STUFF भी STUFF में XML से varchar करने के लिए संक्षिप्त स्ट्रिंग कास्टिंग है।

नोट: ऊपर के उदाहरण से परिणाम XML -एनकोडित किया जाएगा, जिसका अर्थ यह स्थान ले लेगा < साथ पात्रों &lt; आदि यदि आप ऐसा नहीं चाहते हैं, तो FOR XML PATH('')) FOR XML PATH, TYPE).value('.[1]','varchar(MAX)') , उदा:

SELECT 
    STUFF( (SELECT ';' + Email
        FROM Customers 
        where (Email is not null and Email <> '')
        ORDER BY Email ASC 
        FOR XML PATH, TYPE).value('.[1]','varchar(900)'),
    1, 1, '')

इसका उपयोग MySQL में GROUP_CONCAT समान या PostgreSQL string_agg में string_agg समान परिणाम प्राप्त करने के लिए किया जा सकता है, हालांकि हम ग्रुप बाय एग्रीगेट के बजाय string_agg का उपयोग करते हैं। (एक विकल्प के रूप में, आप एक उपयोगकर्ता-निर्धारित एग्रीगेट को इस तरह स्थापित कर सकते हैं जैसे कि अगर आप GROUP_CONCAT करीब कार्यक्षमता की तलाश कर रहे हैं)।

कॉलम नामों को अल्पविराम से अलग करें (सूची नहीं)

/*
The result can be use for fast way to use columns on Insertion/Updates.
Works with tables and views.

Example: eTableColumns  'Customers'
ColumnNames
------------------------------------------------------
Id, FName, LName, Email, PhoneNumber, PreferredContact

INSERT INTO Customers (Id, FName, LName, Email, PhoneNumber, PreferredContact)
    VALUES (5, 'Ringo', 'Star', '[email protected]', NULL, 'EMAIL')
*/
CREATE PROCEDURE eTableColumns (@Table VARCHAR(100))
AS
SELECT ColumnNames = 
   STUFF( (SELECT ', ' +  c.name
FROM    
    sys.columns c
INNER JOIN 
    sys.types t ON c.user_type_id = t.user_type_id
WHERE
    c.object_id = OBJECT_ID( @Table)
        FOR XML PATH, TYPE).value('.[1]','varchar(2000)'),
    1, 1, '')
GO

sql सर्वर में अल्पविराम के लिए सामान अलग

FOR XML PATH और STUFF लिए एक पंक्ति में कई पंक्तियों को STUFF करने के लिए:

  select distinct t1.id,
      STUFF(
             (SELECT ', ' + convert(varchar(10), t2.date, 120)
              FROM yourtable t2
              where t1.id = t2.id
              FOR XML PATH (''))
              , 1, 1, '')  AS date
    from yourtable t1;

STUFF () फ़ंक्शन का मूल उदाहरण।

STUFF (ओरिजिनल_ एक्सप्रेशन, स्टार्ट, लेंथ, रिप्लेसमेंट_एक्सप्रेशन)

STUFF () फंक्शन आवेषण रिप्लेसमेंट_एक्स्पिरेशन, प्रारंभ में निर्दिष्ट स्थान पर, लंबाई पैरामीटर का उपयोग करके निर्दिष्ट वर्णों को हटाने के साथ।

 Select FirstName, LastName,Email, STUFF(Email, 2, 3, '*****') as StuffedEmail From Employee

इस उदाहरण को निष्पादित करने के परिणामस्वरूप दी गई तालिका वापस आ जाएगी

पहला नाम उपनाम ईमेल StuffedEmail
Jomes शिकारी [email protected] J*****[email protected]
श्याम राठौड़ [email protected] S*****[email protected]
राम शिंदे [email protected] आर ***** hotmail.com


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow