如果现有表A,列名A_id,A_name
数据是这样子的:
A_id A_name
1 a,b:001,c:002,d:003
2 tome,jack:110,marry:111, 请问:查询出来的结果显示要是这样子的:无列名 无列名
b 001
c 002
d 003
sql语句怎样写呢?
数据是这样子的:
A_id A_name
1 a,b:001,c:002,d:003
2 tome,jack:110,marry:111, 请问:查询出来的结果显示要是这样子的:无列名 无列名
b 001
c 002
d 003
sql语句怎样写呢?
查询出来后显示的结果是这样子的(查询出来后显示两列):b 001
c 002
d 003
显示的结果就是:jack 110
marry 111
显示的结果就是:jack 110
marry 111
b:001-->b 001
c:002-->c 002
d:003-->d 003
...
create table a(A_id int,A_name varchar(50))
insert into a
select 1,'a,b:001,c:002,d:003' union all
select 2,'tome,jack:110,marry:111'
create proc wsp
@a_id int
as
declare @sql varchar(1000),@val varchar(100)
declare @t table(name varchar(10),value varchar(20))
select @sql=a_name+',' from a where a_id=@a_id
while(charindex(',',@sql)>0)
begin
set @val = left(@sql,charindex(',',@sql)-1)
print @val
if(charindex(':',@val)>0)
insert into @t select left(@val,charindex(':',@val)-1),substring(@val,charindex(':',@sql)+1,len(@val))
set @sql=substring(@sql,charindex(',',@sql)+1,len(@sql))
end
select * from @t
go
exec wsp 1
数据是这样子的:
A_id A_name
1 a,b:001,c:002,d:003
2 tome,jack:110,marry:111, 请问:查询出来的结果显示要是这样子的:无列名 无列名
b 001
c 002
d 003
这里A_name 的数据类型为varchar(30),这样的话:
declare @varA_name varchar(30),@var_1 char(1),@var_2 char(3)
set @varA_name = select A_name form A where A_id=1
这样之后,再对字符串变量@varA_name进行处理,有很多函数,如left(),right()等等字符串函数进行处理!
select @var_1,@var_2
select @var_1,@var_2
select @var_1,@var_2
INSERT test34 SELECT 1 ,'a,b:001,c:002,d:003'
UNION ALL SELECT 2 ,'tome,jack:110,marry:111'
goCreate FUNCTION getA_name(@a_name varchar(100))
RETURNS @a table(col1 varchar(20),col2 varchar(20))
AS
BEGIN
DECLARE @c varchar(100)
DECLARE @c1 varchar(100)
SET @c=stuff(@a_name,1,charindex(',',@a_name),'')+',' WHILE len(@c)>0
BEGIN
SET @c1=left(@c,charindex(',',@c)-1)
INSERT @a SELECT left(@c1,charindex(':',@c1)-1),stuff(@c1,1,charindex(':',@c1),'')
SET @c=replace(@c,@c1+',','')
IF @c=',' SET @c=''
END
return
END
go
master..xp_execresultset 'select ''select * from dbo.geta_name(''''''+a_name+'''''')'' from test34 where a_id=1',N'test'--result
/*col1 col2
-------------------- --------------------
b 001
c 002
d 003*/