首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

SQL 的一个有关问题

2012-03-26 
SQL 的一个问题求一个SQL算法,表:create tableymtable(id char(7) not null ,Role1 bit not null ,Role2 b

SQL 的一个问题
求一个SQL算法,

表:

create table ymtable
(
  id char(7) not null ,
  Role1 bit not null ,
  Role2 bit not null ,
  Role3 bit not null ,
);

就是一个角色的表,
我想写一个取数据的过程:
  带入一个ID参数,返回一个int 或者char型的
  角色数据,(要求该数据能唯一确定角色,即顺序,值唯一确定)
  例如:
  4: 那么数据相应是:role1/0 role2/0 role3/1

--------------
想了很久,只觉得用循环来做比较好,但是不知道该如何,能一次的获取各个数据

例如: select * from mytable where id='0000001'
  返回的是该条记录,,问,是否有索引直接获取这条记录中的各字段值?
  (只查询一次数据库,如果是select @role= role1 from mytable where id='0000001' 
  ..重复,这样,的方法,就太不效率了,有n个字段要查询
  n-1次表,就蛋疼了,求高手给个好点得法子。谢谢)

   
 

[解决办法]

SQL code
不用写过程,直接select role1,role2.role3 from tb where id=4如果真想写过程create function getRole(@id)returns @tb table(role1 bit,role2 bit,role3 bit)asbegininsert @tb select role1,role2.role3 from tb where id=@idreturnend用的时候select * from dbo.getRole(4)
[解决办法]
突然明白了你的意思
SQL code
--首先保证id=4的数据唯一性create function getRole(@id)returns char(20)asbegindeclare @role char(20)set @role=''select @role=@role+'role1/'+role1+' ' from tb where id=@idselect @role=@role+'role2/'+role2+' ' from tb where id=@idselect @role=@role+'role3/'+role3+' ' from tb where id=@idreturn @roleend用的时候select dbo.getRole(4)
[解决办法]
刚才的有点错误,修改了一下
过程,
SQL code
 create function getRole(@id int)  returns varchar(100)  as  begin  declare @role varchar(100)  set @role=''  select @role=@role+'role1/'+cast(role1 as varchar)+' ' from tb where id=@id  select @role=@role+'role2/'+cast(role2 as varchar)+' ' from tb where id=@id  select @role=@role+'role3/'+cast(role3 as varchar)+' ' from tb where id=@id  return @role  end
[解决办法]
楼上的,你写那么多和下面这句有区别么?
select 'role1'+role1+' '+'role2'+role2+' '+'role3'+role3 from tb where...
[解决办法]
探讨

楼上的,你写那么多和下面这句有区别么?
select 'role1'+role1+' '+'role2'+role2+' '+'role3'+role3 from tb where...

热点排行