Heim >Datenbank >MySQL-Tutorial >Wie repliziere ich die SUBSTRING_INDEX-Funktion von MySQL in SQL Server?

Wie repliziere ich die SUBSTRING_INDEX-Funktion von MySQL in SQL Server?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 09:20:03976Durchsuche

How to Replicate MySQL's SUBSTRING_INDEX Function in SQL Server?

SQL Server-Äquivalent der MySQL-Funktion „substring_index“

Bei der Migration von Abfragen von MySQL zu SQL Server ist es häufig erforderlich, SQL Server-Äquivalente für häufig verwendete MySQL-Funktionen zu finden.

Die Funktion substring_index() von MySQL

Die Funktion SUBSTRING_INDEX() von MySQL ruft einen Teilstring aus einem bestimmten String basierend auf dem Vorkommen eines angegebenen Trennzeichens ab. Seine Syntax ist:

SUBSTRING_INDEX(str, delim, count)

Zum Beispiel:

SELECT SUBSTRING_INDEX('www.somewebsite.com','.',2);

Dies würde „www.somewebsite“ zurückgeben.

Entspricht in SQL Server T-SQL

Eine praktikable Option in T-SQL zum Replizieren der Funktionalität von SUBSTRING_INDEX() ist eine Kombination aus XQuery und einer Skalarfunktion:

CREATE FUNCTION dbo.SUBSTRING_INDEX
(
    @str NVARCHAR(4000),
    @delim NVARCHAR(1),
    @count INT
)
RETURNS NVARCHAR(4000)
WITH SCHEMABINDING
BEGIN
    DECLARE @XmlSourceString XML;
    SET @XmlSourceString = (SELECT N'<root><row>' + REPLACE( (SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>' ) + N'</row></root>');

    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

Beispielverwendung:

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

Ausgabe :

Result
---------------
www.somewebsite

Das obige ist der detaillierte Inhalt vonWie repliziere ich die SUBSTRING_INDEX-Funktion von MySQL in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn