我是sql server的新手。我需要像mysql一样的substring_index。我正在使用substring,partindex for sqlserver。我在sql server中使用以下注释:
select substring('13.1039901,80.1294101',PATINDEX('%13.1039901,80.1294101%',','),1);
结果:
It gives empty result
但是在mysql中:
select substring_index('13.1039901,80.1294101',',',1) ;
结果:
13.1039901
注意: 我不知道某些情况下的子串数。任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
如果你在PATINDEX中使用这个模式,它应该返回1,因为模式匹配你的整个字符串
因此,如果您将结果替换为PATINDEX,则查询看起来像SUBSTRING('13.1039901,80.1294101', 1, 1)
。
现在SUBSTRING的工作原理如下:
SUBSTRING ( expression ,start , length )
。
这意味着您要返回的字符的起始索引是1(请参阅第一段),并且您要返回的字符串的长度也是1。 我没有自己测试,但我希望你的表达式返回 1 中的字符,如 1 3.1039901,80.1294101。
要获得您似乎正在寻找的结果,您可以使用
SELECT SUBSTRING('13.1039901,80.1294101', 1, CHARINDEX(',', '13.1039901,80.1294101') - 1)
这应该会在逗号之前给你一切。
这种方式start
是字符串的开头,length
是逗号的位置,因此字符串被截断。