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

Barbara Streisand
发布: 2024-11-17 09:20:03
原创
902 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板