Sql server sqlserver中类似mysql的子字符串
我是sql server的新手。我需要像mysql一样的子字符串索引。我正在为sqlserver使用子字符串partindex。我在sql server中使用以下注释:Sql server sqlserver中类似mysql的子字符串,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我是sql server的新手。我需要像mysql一样的子字符串索引。我正在为sqlserver使用子字符串partindex。我在sql server中使用以下注释: select substring('13.1039901,80.1294101',PATINDEX('%13.1039901,80.1294101%',','),1); 结果: It gives empty result 13.1039901 但在mysql中: select substring_index('13.103
select substring('13.1039901,80.1294101',PATINDEX('%13.1039901,80.1294101%',','),1);
结果:
It gives empty result
13.1039901
但在mysql中:
select substring_index('13.1039901,80.1294101',',',1) ;
结果:
It gives empty result
13.1039901
注:
我不知道某些情况下的子字符串计数。任何人请帮助我解决此问题。如果您在PATINDEX中使用此模式,它应该返回1,因为该模式与您的整个字符串匹配。
因此,如果用结果替换PATINDEX,则查询看起来像
子字符串('13.1039901,80.1294101',1,1)
现在子字符串的工作方式如下:子字符串(表达式、开始、长度)
这意味着要返回的字符的起始索引为1(请参见第一段),并且要返回的字符串的长度也为1。我自己没有测试这个,但我希望您的表达式返回字符1,如13.1039901,80.1294101所示 要获得您似乎正在寻找的结果,您可以使用
选择子字符串('13.1039901,80.1294101',1,CHARINDEX(',','13.1039901,80.1294101')-1)
结果应该是逗号之前的所有内容
这样,
start
是字符串的开头,length
是逗号的位置,因此字符串在此处被截断。感谢您的即时回复。这对我很有用。