末尾就索性试一下,对于结果取len是未曾难点的,长字符串select出来,然后再复制粘贴出来,中间就被截断了。

col

dfkd
dfdkdf
dfdkf
dffjk
(所影响的行数为 4 行卡塔 尔(阿拉伯语:قطر‎

二、按钦点符号分割字符串,重临分割后的要素个数,方法超粗略,便是看字符串中设有多少个分隔符号,然后再加后生可畏,就是供给的结果。

复制代码 代码如下:

CREATE function Get_StrArrayLength
(
@str varchar(1024), –要分开的字符串
@split varchar(10) –分隔符号
)
returns int
as
begin
declare @location int
declare @start int
declare @length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while @location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return @length
end

调用示例:select dbo.Get_StrArrayLength(‘78,1,2,3′,’,’)
返回值:4

三、按钦定符号分割字符串,重回分割后钦命索引的第多少个成分,象数组同样方便

复制代码 代码如下:

CREATE function Get_StrArrayStrOfIndex
(
@str varchar(1024), –要分开的字符串
@split varchar(10), –分隔符号
@index int –取第多少个因素
)
returns varchar(1024)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location =0 select @location =len(@str)+1
–那儿存在两种状态:1、字符串海市蜃楼分隔符号
2、字符串中留存分隔符号,跳出while循环后,@location为0,那默感到字符串前边有八个相隔符号。
return substring(@str,@start,@location-@start)
end

调用示例:select dbo.Get_StrArrayStrOfIndex(‘8,9,4′,’,’,2)
返回值:9

四、结合上面多少个函数,象数组相通遍历字符串中的成分

复制代码 代码如下:

declare @str varchar(50)
set @str=’1,2,3,4,5′
declare @next int
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,’,’)
begin
print dbo.Get_StrArrayStrOfIndex(@str,’,’,@next)
set @next=@next+1
end

调用结果:
1
2
3
4
5

4503.com 1

大器晚成,用不时表作为数组

单身地复制SSMS查询窗口中本来的字符串,也是未有毛病的。

create function f_split(@c varchar(2000),@split varchar(2))
returns @t table(col varchar(20))
as
begin
while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),”)
end
insert @t(col) values (@c)
return
end
4503.com,go
select * from dbo.f_split(‘dfkd,dfdkdf,dfdkf,dffjk’,’,’)
drop function f_split

 

您可能感兴趣的文章:

  • Mysql字符串截取函数SUBSTTucsonING的用法表明
  • MySQL
    replace函数替换字符串语句的用法
  • mysql获取字符串长度函数(CHATiggo_LENGTH)
  • 运用MySQL中的AVG函数求平均值的学科
  • 安详严整Mysql中的JSON连串操作函数
  • Mysql中LAST_INSERT_ID()的函数使用详细明白
  • mysql函数拼接查询concat函数的选择办法
  • Mysql数据库使用concat函数奉行SQL注入查询
  • MySQL笔记之函数查询的使用
  • mysql
    查询数据库中的存储进程与函数的语句
  • MySQL使用集结函数举办询问操作实例安详严整

 

复制代码 代码如下:

而拍卖字符串的逻辑又很简短,料定能够不会有bug,

下边包车型大巴函数,完结了象数组同样去管理字符串。

对此超越4000的字符串不可能print出来的时候,往往能够筛选select
@v_str这种办法,将后台的字符串select出来,然后粘贴出来查看

20160920补充:

 

那么必然是从select中复制然后粘贴的时候出的错。

只是那些独自是显得难题,不会影响到其逻辑运算。

对此SSMS中询问出来的结果,retrieved有限制,最大值为65535,如下截图。

 

下一场复制select出来的结果到一个新窗口中,发掘字符串结尾跟管理字符串的逻辑对不上,

只是print出来的字符串有自然长度约束,刚才专门试了瞬间,应该是4000个字符

 

调解存款和储蓄进程时,往往可以用print将积累进程中的变量print出来,

诸如笔者对字符串的拍卖是以分行结尾,实际上select出来然后粘贴出来查看,根本不是以办事处结尾,