declare @k int , @savevalue varchar(20)
set @serial=0
set @k = charindex(',',@keye)
while @k>=1
begin
set @savevalue=left(@keye,@k-1)
set @keye=substring(@keye, @k + 1, len(@keye) - @k)
set @k = charindex(',', @keye)
...........处理代码
end上面是我对逗号代码的拆分处理,我觉得这种方法有些不方便,经统计处理代码多数是INSERT INTO 向数据库表插入数据或UPDATE 更新数据 ,我想问有没有更简单更有效率的代码,最好是哪种一两条语句就完成的方法。
set @serial=0
set @k = charindex(',',@keye)
while @k>=1
begin
set @savevalue=left(@keye,@k-1)
set @keye=substring(@keye, @k + 1, len(@keye) - @k)
set @k = charindex(',', @keye)
...........处理代码
end上面是我对逗号代码的拆分处理,我觉得这种方法有些不方便,经统计处理代码多数是INSERT INTO 向数据库表插入数据或UPDATE 更新数据 ,我想问有没有更简单更有效率的代码,最好是哪种一两条语句就完成的方法。
set @s='1,2,3,4,a,b,d'
select substring(@s,number,charindex(',',@s+',',number)-number)as col
from master..spt_values
where type='p' and number<=len(@s+'a') and charindex(',',','+@s,number)=number
/*
col
--------------------------------------------------------------------
1
2
3
4
a
b
d(7 個資料列受到影響)
*/
declare @SQL Nvarchar(1000)
set @s='1,2,3,4,a,b,d'
SET @SQL='SELECT COL='''+REPLACE(@S,',',''' '+CHAR(10)+CHAR(13)+'UNION ALL SELECT ''')+''''PRINT @SQL
/*
SELECT COL='1'
UNION ALL SELECT '2'
UNION ALL SELECT '3'
UNION ALL SELECT '4'
UNION ALL SELECT 'a'
UNION ALL SELECT 'b'
UNION ALL SELECT 'd'
*/再用EXEC执行
returns @R table (Col nvarchar(100))
as
begin
declare @StrLen int
set @StrLen=len(@Str)
while charindex(@Split,@StrLen)>0
begin
insert into @R values(left(@Str,charindex(@Split,@StrLen)-1))
set @Str=stuff(@Str,1,charindex(@Split,@StrLen),'')
end
insert into @R values(@Str)
return
end declare @a nvarchar(4000)
set @a='1,23,a'
select dbo.FC_SlpitStr(@a,',')
select dbo.FC_SlpitStr(@a,',')
服务器: 消息 208,级别 16,状态 1,行 3
对象名 'dbo.FC_SlpitStr' 无效。
我只好修改为 select * .from dbo.FC_SlpitStr(@a,',')
但出来的值 1,23,a
INSERT INTO t (AA,BB,CC,CC)
VALUES ('AA','BB','CC','DD')
而不是一个单字段
你把每个函数
理解之后
在想想
当number=1的时候
为社么行
当number=2的时候
为什么不行declare @s varchar(100)
set @s='1,2,3,4,a,b,d'
select substring(@s,number,charindex(',',@s+',',number)-number) as col
from master..spt_values where type='P' and charindex(',',','+@s,number)=numbernumber col
----------- -------------
1 1
3 2
5 3
7 4
9 a
11 b
13 d
1、number是系统自带的吗,不需定义与赋值吗
2、我找出来字符怎么将列数据转为每个字段,INSERT INTO到表中,如果复杂了反而没有我前面有字符拆分快。
1:
select distinct number from master..spt_values系统表
2:
declare @s varchar(100)
set @s='1,2,3,4,a,b,d'
select * into # from
(
select substring(@s,number,charindex(',',@s+',',number)-number) as col
from master..spt_values where type='P' and charindex(',',','+@s,number)=number
) ttselect * from #
col
-------
1
2
3
4
a
b
d
col1 col2
我需要向A表加入数据, set @s='sdf,df^2,5^3,8^4,9^d,bbb'
A表
col1 col2
sdf df
2 5
3 8
就这样。
set @s='sdf,df^2,5^3,8^4,9^d,bbb'
select * into #1 from
(
select substring(@s,number,charindex('^',@s+'^',number)-number) as col
from master..spt_values where type='P' and charindex('^','^'+@s,number)=number
) tt
select * from #1
select substring(col,1,charindex(',',col)-1) col1,
substring(col,charindex(',',col)+1,len(col)-charindex(',',col)) col2 from #1
set @s='sdf,df^2,5^3,8^4,9^d,bbb'
select * into #1 from
(
select substring(@s,number,charindex('^',@s+'^',number)-number) as col
from master..spt_values where type='P' and charindex('^','^'+@s,number)=number
) tt
select * from #1
select substring(col,1,charindex(',',col)-1) col1,
substring(col,charindex(',',col)+1,len(col)-charindex(',',col)) col2 from #1col1 col2
------------ ------------------
sdf df
2 5
3 8
4 9
d bbb
可以结贴啦
--函数sql_str (tabale 名称,tbale 字段 ,数据 )
期待高手帮你解决吧
------------
web页特别选择多条记录向后面传参,肯定只能用这种方式,我只是想了解有没有更好的方式处理