工具:sql2000,
串:'1,部门经理,经理查阅,2,3,24,0|2,助理,助理处理,2,3,24,0|'
这是一个完整的串,|是用来分隔行的,这里是两行记录,第一个数字表示行号,现在整体作为参数传入数据库,通过一个函数,以表变量的形式返回,请问用函数咋个处理?结果形式:
select 1,'部门经理','经理查阅',2,3,24,0
union all
select 2,'助理','助理处理',2,3,24,0
串:'1,部门经理,经理查阅,2,3,24,0|2,助理,助理处理,2,3,24,0|'
这是一个完整的串,|是用来分隔行的,这里是两行记录,第一个数字表示行号,现在整体作为参数传入数据库,通过一个函数,以表变量的形式返回,请问用函数咋个处理?结果形式:
select 1,'部门经理','经理查阅',2,3,24,0
union all
select 2,'助理','助理处理',2,3,24,0
解决方案 »
- SQL for循环
- 请教一个分组select语句:两个字段,如何按照一个字段进行分组查询?谢谢!
- SQL数据库如何查询某列的和
- 我在备份SQL数据的时候提示设备 'E:\backup\数据库备\data.BAK ' 上的卷不是多家族媒体集的一部分。可用 BACKUP WITH FORMAT 来构造新的媒体集。
- 存储过程改造
- SQL server是不是只能装在W2kserver版上?
- [高手进]-----查询各天nn值最大的pid
- sql server 2000,我突然发现数据库的内容被人清空了!现在想:1、找出当天每个用户对数据库操作的记录 2、恢复数据库内容。能不能实现。谢谢
- 急!!!急!!在线等待,请大力跟马可及其他老大帮忙!!
- 新手:access数据库,请帮帮我!!!
- sql查询的问题
- 优化语句
set @s=N'1,部门经理,经理查阅,2,3,24,0|2,助理,助理处理,2,3,24,0'
set @sql= replace('select '''+replace(@s,'|',''' union all select '''),',',''',''')+''''
exec(@sql)
set @s=N'1,部门经理,经理查阅,2,3,24,0|2,助理,助理处理,2,3,24,0'
set @sql= replace('select '''+replace(@s,'|',''' union all select '''),',',''',''')+''''
print @sql
/*
select '1','部门经理','经理查阅','2','3','24','0'
union all
select '2','助理','助理处理','2','3','24','0'
*/
无法在向表插入变量时将 EXECUTE 用作源。如下:declare @str varchar(1000),@get_str varchar(1000)
declare @tb table (id int,step_name varchar(200),do_name varchar(200),company_id int,deptcode int,step_time int,flag int)
set @str='1,''部门经理2'',''经理处理'',116,749,10,1|2,''部门经理2'',''经理处理'',119,764,10,1|'
set @get_str=''while charindex('|',@str)>0
begin
set @get_str=left(@str,charindex('|',@str)-1)
insert into @tb(id,step_name,do_name,company_id,deptcode,step_time,flag)
exec('select '+ @get_str)
set @str=right(@str,len(@str)-charindex('|',@str))
end
(
@c VARCHAR(MAX) ,
@split VARCHAR(50)
)
RETURNS @t TABLE ( col VARCHAR(50) )
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写成数据库函数
select * from Split(要转换的变量 , '分割符')调用方式select * from Split(@id , ',')