"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > SQL सर्वर 2012 में MySQL की SUBSTRING_INDEX कार्यक्षमता कैसे प्राप्त करें?

SQL सर्वर 2012 में MySQL की SUBSTRING_INDEX कार्यक्षमता कैसे प्राप्त करें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:303

How to Achieve MySQL's SUBSTRING_INDEX Functionality in SQL Server 2012?

SQL सर्वर MySQL में सबस्ट्रिंग_इंडेक्स फ़ंक्शन के बराबर है

MySQL में सबस्ट्रिंग_इंडेक्स फ़ंक्शन का उपयोग किसी दिए गए स्ट्रिंग से पहले एक सबस्ट्रिंग निकालने के लिए किया जाता है एक सीमांकक की घटनाओं की संख्या. SQL सर्वर 2012 में समान कार्यक्षमता प्राप्त करने के लिए, आप निम्नलिखित तरीकों में से एक को नियोजित कर सकते हैं:

T-SQL स्केलर फ़ंक्शन:

CREATE FUNCTION dbo.SUBSTRING_INDEX
(
    @str NVARCHAR(4000),
    @delim NVARCHAR(1),
    @count INT
)
RETURNS NVARCHAR(4000)
WITH SCHEMABINDING
BEGIN
    -- Convert the string to an XML document for processing
    DECLARE @XmlSourceString XML;
    SET @XmlSourceString = (SELECT N'<root><row>'   REPLACE( (SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>' )   N'</row></root>');

    -- Extract the desired substring using XQuery
    RETURN STUFF
    (
        ((
            SELECT  @delim   x.XmlCol.value(N'(text())[1]', N'NVARCHAR(4000)') AS '*'
            FROM    @XmlSourceString.nodes(N'(root/row)[position() <= sql:variable("@count")]') x(XmlCol)
            FOR XML PATH(N''), TYPE
        ).value(N'.', N'NVARCHAR(4000)')), 
        1, 1, N''
    );
END
GO

-- Example usage
SELECT dbo.SUBSTRING_INDEX(N'www.somewebsite.com', N'.', 2) AS Result;

T-SQL इनलाइन टेबल-मूल्यवान फ़ंक्शन:

CREATE FUNCTION dbo.SUBSTRING_INDEX
(
    @str NVARCHAR(4000),
    @delim NVARCHAR(1),
    @count INT
)
RETURNS TABLE
AS 
RETURN
    WITH Base
    AS 
    (
        SELECT XmlSourceString = CONVERT(XML, (SELECT N'<root><row>'   REPLACE( (SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>' )   N'</row></root>'))
    )   
    SELECT STUFF
    (
        ((
            SELECT  @delim   x.XmlCol.value(N'(text())[1]', N'NVARCHAR(4000)') AS '*'
            FROM    Base b 
            CROSS APPLY b.XmlSourceString.nodes(N'(root/row)[position() <= sql:variable("@count")]') x(XmlCol)
            FOR XML PATH(N''), TYPE
        ).value(N'.', N'NVARCHAR(4000)')), 
        1, 1, N''
    ) AS Result;
GO

-- Example usage
SELECT  *
FROM    (
    SELECT N'www.somewebsite.com' UNION ALL 
    SELECT N'www.yahoo.com' UNION ALL 
    SELECT N'www.outlook.com'
) a(Value)
CROSS APPLY dbo.SUBSTRING_INDEX(a.Value, N'.', 2) b;

ये फ़ंक्शन आपको SQL सर्वर में MySQL सबस्ट्रिंग_इंडेक्स फ़ंक्शन के व्यवहार को दोहराने की अनुमति देते हैं, जिससे आप सबस्ट्रिंग निष्कर्षण कार्यों को पोर्टेबल रूप से करने में सक्षम होते हैं। .

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3