>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 MySQL의 SUBSTRING_INDEX 함수를 복제하는 방법은 무엇입니까?

SQL Server에서 MySQL의 SUBSTRING_INDEX 함수를 복제하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-17 09:20:03976검색

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과 동일합니다

SUBSTRING_INDEX()의 기능을 복제하기 위해 T-SQL에서 실행 가능한 옵션 중 하나는 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으로 문의하세요.