一个检索字段语句的应用(比较难。。。)

newyu1127 2003-04-02 09:22:38
各位师兄:
好久没来了,有个问题请教:
我有一个表TEST,有5个字段,这是个稀疏数据表,
即除了a1为关键字不能为空外,其余字段皆有可能为空,如下:

a1 a2 a3 a4 a5
a NULL l p null
b NULL NULL k y
c f NULL n r
d g t i o
e NULL m null w
现需写一条SQL语句,要求如下:
当我根据关键字提取一条记录(如a1=c)时,此语句能自动检索该条记录的
所有字段,将值不为空的字段select出来。
即结果如下:
a1 a2 a4 a5
c f n r

请各位师兄赐教,尽量用一条SQL语句解决,
若不行,提出其它好的解决方法者一样有分。
还有就是其实这个表里共有个16字段,所以请大家要考虑到这一点,
不要把语句写的太机械化了。谢谢了先。
...全文
10 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zjcxc 2003-04-14
难一点,要从syscolumns表中取得表的所有字段,判断其值是否为NULL,再生成SQL语句
回复
newyu1127 2003-04-14
如果字段不固定,是不是就没有其它方法了呢?(数据库为MS-SQL)
回复
w_rose 2003-04-14
“稀疏数据表”不稀疏,一大堆的null就叫稀疏呀?

create table 稀疏表不是表而是元素(行 varchar(10),列 varchar(10),值 varchar(30))
回复
happydreamer 2003-04-02
还没想出好的办法,表固定字段可以用登山gg的方法
回复
存储过程和动态SQL:
create procedure p_a (@a varchar)
as
declare @sql varchar(300)
set @sql = 'select a1,' +
(case when a2 is null then '' else 'a2,' end) +
(case when a3 is null then '' else 'a3,' end) +
......
(case when a5 is null then '' else 'a5,' end) +
from table1 where a1 = @a
set @sql = left(@sql, len(@sql) - 1) + ' from table1 where a1 = "'+@a+'"'
exec (@sql)
go
回复
newyu1127 2003-04-02
自己UP一下了。
回复
newyu1127 2003-04-02
哦,如果是ACCESS数据库的话。就没有办法了吗?







回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-04-02 09:22
社区公告
暂无公告