如何利用SQL语句将表中多个字段(可能为空)查询以一个字段表示。

Byf 2000-06-21 07:27:00

最近在编程的过程遇到这样个问题,就是在用SQL语句查询数据库的时候,我们可以将多个字段的内容表示成一组结果,语句如:select 字段名1+字段名2 as 显示字段名 from 表名。
但问题是对一个记录来说如果其中一个字段为空,假设是字段2,则即使字段1不为空,查询的结果仍是空的。
不知问题出在何处,可有方法解决,恳请高人指点。。
...全文
3136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanghuan 2000-06-22
  • 打赏
  • 举报
回复
select case when 字段名1 is null
then 替代值
else 字段名1
end +
case when 字段名2 is null
then 替代值
else 字段名2
end as 显示字段名
from 表名
tanghuan 2000-06-22
  • 打赏
  • 举报
回复
把下面的语句当作你的recordset的SQL
sqlserver可用
select isnull(字段名1,替代值)+isnull(字段名2,替代值) as 显示字段名 from 表名


下面的语句对几乎所有关系数据库都适用替代值

select case when 字段名1 is null
then else 字段名1
end +
case when 字段名2 is null
then 替代值
else 字段名2
end as 显示字段名
from 表名
Byf 2000-06-22
  • 打赏
  • 举报
回复
首先谢谢各位的回复
sanhan 说的用=的方法存在语法上的错误不能正常的运行。

laozheng 字段的内容当然有null的情形,当你允许一个字段为空时,又没有对它赋值,此时就为null。选用default('')也不行,因为字段如时间之类的,我不希望预先设置一个时间,有时该字段可能为空。

tanghuan 你提的方法需要预先判断字段是否为null,而我的查询是在生成recordset时使用的,而这时根本没有办法访问recordset中的某个字段。

l_cheng 2000-06-22
  • 打赏
  • 举报
回复
sql server中可以这样解决:

select 字段名1+isnull(字段名2,0) as 显示字段名 from 表名
当字段名2为null时,系统就会将其当作进行运算
Carrie 2000-06-22
  • 打赏
  • 举报
回复
有这种把null的字段转化为另一值的函数,在oracle里好像是nvl(字段名,转化后的值).
tanghuan 2000-06-22
  • 打赏
  • 举报
回复
用isnull函数或case表达式
LaoZheng 2000-06-22
  • 打赏
  • 举报
回复
字段内容不能为null
你可以对字段作default('')
sanhan 2000-06-21
  • 打赏
  • 举报
回复
用以下SQL语句试试
select 显示字段名=字段名1+字段名2 from 表名

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧