日期:2014-05-16 浏览次数:20750 次
/**
*方法一
*/
select * from dbo.split(’01__02__03’,’__’)
发生错误,返回的结果不是我们原本要的结果:
-------------------
--想要的结果
01
02
03
-----------------
--实际结果:
01
_02
_03
以前我也写过类似的字符串分割自定义函数,也没有想过上面出现的这样问题。
我原来的函数是这样的:
?
/*? StringToTable? */? CREATE?FUNCTION?StringToTable(@StringX?varchar(8000),@Split?nvarchar(10))? RETURNS?@TableResult?TABLE(TableID?nvarchar(20))? AS? BEGIN? DECLARE?@Index?int? SET?@Index=CHARINDEX(@Split,@StringX,1)? WHILE?(@Index>=1)? BEGIN? INSERT?INTO?@TableResult?SELECT?LEFT(@StringX,@Index-1)? SELECT? @StringX=RIGHT(@StringX,LEN(@StringX)-@Index),@Index=CHARINDEX(@Split,@StringX,1)? END? IF(@StringX<>’’)?INSERT?INTO?@TableResult?SELECT?@StringX? RETURN? END |
?
使用类似的select * from dbo.split(’01__02__03’,’__’) 一样出问题。
经过一下的修改就可以了,修改后程序为:
?
/*?
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|