我正在尝试将一个查询从MySQL移植到SQL SERVER 2012。
如何为MySQL的substring_index()写一个等价的函数?
MySQL SUBSTRING_INDEX()返回给定字符串中分隔符出现指定次数之前的子字符串。
SUBSTRING_INDEX(str,delim,count)
SELECT SUBSTRING_INDEX('www.somewebsite.com','.',2);
输出:'www.somewebsite'
我正在尝试将一个查询从MySQL移植到SQL SERVER 2012。
如何为MySQL的substring_index()写一个等价的函数?
MySQL SUBSTRING_INDEX()返回给定字符串中分隔符出现指定次数之前的子字符串。
SUBSTRING_INDEX(str,delim,count)
SELECT SUBSTRING_INDEX('www.somewebsite.com','.',2);
输出:'www.somewebsite'
8条答案
按热度按时间zf2sa74q1#
尝试基于T-SQL和XQuery(
(root/row)[position() <= sql:variable("@count")]
)的解决方案:T-SQL Scalar函数:
输出:
或
TSQL内联表值函数:
输出:
tquggr8v2#
我最近需要这个,所以我写了下面的存储函数。最后是一系列测试,以确保它的操作与MySql函数完全相同(预期的结果是在运行相同的测试后从MySql复制的):
下面是一个受Bogdan Sahlean的答案启发的版本,它使用SQL Server的XML功能来进行解析和组合:
运行测试会产生以下结果:
k4emjkb13#
我最好的选择是:
假设TLD.EXT最多100个字符。你可以增加你喜欢的。
wj8zmpe14#
选择dbo.FN_SUBSTRING_INDEX(N 'prueba','ue',1);
向左选择dbo.FN_SUBSTRING_INDEX(N 'prueba','ue',-1);
oyt4ldly5#
试试这个……
5ktev3wc6#
这个microsoft sql函数的工作方式与mysql中的substring_index函数完全相同
cyvaqqii7#
使用Python获取索引-2
disho6za8#
访问https://learn.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16!