首页 >数据库 >mysql教程 >如何在 SQL Server 中复制 MySQL 的 SUBSTRING_INDEX 函数?

如何在 SQL Server 中复制 MySQL 的 SUBSTRING_INDEX 函数?

Barbara Streisand
Barbara Streisand原创
2024-11-17 09:20:031018浏览

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

MySQL substring_index 函数的 SQL Server 等效项

将查询从 MySQL 迁移到 SQL Server 时,通常需要查找常用 MySQL 函数的 SQL Server 等效项。

MySQL 的 substring_index() 函数

MySQL 的SUBSTRING_INDEX() 函数根据指定分隔符的出现从给定字符串中检索子字符串。其语法为:

SUBSTRING_INDEX(str, delim, count)

例如:

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

这将返回 'www.somewebsite'。

与 SQL Server T-SQL 等效

T-SQL 中用于复制 SUBSTRING_INDEX() 功能的一个可行选项是 XQuery 和标量函数:

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

用法示例:

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

输出:

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

以上是如何在 SQL Server 中复制 MySQL 的 SUBSTRING_INDEX 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn