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 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.
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!