MySQL의 substring_index 함수에 해당하는 SQL Server
MySQL의 substring_index 함수는 지정된 문자열에서 주어진 문자열 앞 부분 문자열을 추출하는 데 사용됩니다. 구분 기호의 발생 횟수입니다. SQL Server 2012에서 유사한 기능을 구현하려면 다음 접근 방식 중 하나를 사용할 수 있습니다.
T-SQL 스칼라 함수:
CREATE FUNCTION dbo.SUBSTRING_INDEX ( @str NVARCHAR(4000), @delim NVARCHAR(1), @count INT ) RETURNS NVARCHAR(4000) WITH SCHEMABINDING BEGIN -- Convert the string to an XML document for processing DECLARE @XmlSourceString XML; SET @XmlSourceString = (SELECT N'<root><row>' REPLACE( (SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>' ) N'</row></root>'); -- Extract the desired substring using XQuery 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 -- Example usage SELECT dbo.SUBSTRING_INDEX(N'www.somewebsite.com', N'.', 2) AS Result;
T-SQL 인라인 테이블 값 함수:
CREATE FUNCTION dbo.SUBSTRING_INDEX ( @str NVARCHAR(4000), @delim NVARCHAR(1), @count INT ) RETURNS TABLE AS RETURN WITH Base AS ( SELECT XmlSourceString = CONVERT(XML, (SELECT N'<root><row>' REPLACE( (SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>' ) N'</row></root>')) ) SELECT STUFF ( (( SELECT @delim x.XmlCol.value(N'(text())[1]', N'NVARCHAR(4000)') AS '*' FROM Base b CROSS APPLY b.XmlSourceString.nodes(N'(root/row)[position() <= sql:variable("@count")]') x(XmlCol) FOR XML PATH(N''), TYPE ).value(N'.', N'NVARCHAR(4000)')), 1, 1, N'' ) AS Result; GO -- Example usage SELECT * FROM ( SELECT N'www.somewebsite.com' UNION ALL SELECT N'www.yahoo.com' UNION ALL SELECT N'www.outlook.com' ) a(Value) CROSS APPLY dbo.SUBSTRING_INDEX(a.Value, N'.', 2) b;
이러한 함수를 사용하면 SQL Server에서 MySQL substring_index 함수의 동작을 복제하여 부분 문자열 추출 작업을 이식적으로 수행할 수 있습니다. .
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3