请教一个SQL语句!

C2K 2009-02-01 02:58:16
表结构和数据如下:
ID Name1 Name2
1 N1 NULL
2 N2 NULL
3 NULL N3
4 N4 NULL

我想最终显示的时候仍然是
1 N1
2 N2
3 N3
4 N4
请问这样的SQL语句该如何写?谢谢!
...全文
141 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
新丁11111 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yangsnow_rain_wind 的回复:]
SQL codeselectid,isnull(name1,name2)as[Name]fromtb
[/Quote]

感觉不错
jiujiang88 2009-02-02
  • 打赏
  • 举报
回复
isnull(Name1,Name2)是指如果前者不为NULL,就返回该表达式的值,如果为NULL,返回后面表达式的值。(两者数据类型必须相同)
所以如果两个字段都有值,肯定返回前者表达式的值。
lgxyz 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 josy 的回复:]
如果是
5 N5 N6
怎么显示?
[/Quote]
是这如果两个字段都有值呢
是什么结果?
pengxuan 2009-02-02
  • 打赏
  • 举报
回复

if object_id('tb') is not null
drop table tb
go
create table tb(id int identity(1,1),Name1 varchar(10),Name2 varchar(10))
go
insert into tb
select 'N1',NULL union all
select 'N2',NULL union all
select NULL,'N3' union all
select 'N4',NULL
go
select isnull(Name1,Name2) from tb
wojiaochenglong 2009-02-02
  • 打赏
  • 举报
回复
isnull函数
muyebo 2009-02-01
  • 打赏
  • 举报
回复
四楼很不错啊
select id,isnull(name1,name2) as [Name]
from tb

肥龙上天 2009-02-01
  • 打赏
  • 举报
回复

select id,isnull(name1,name2) as [Name]
from tb


caibirdyb 2009-02-01
  • 打赏
  • 举报
回复


select id,isnull(Name1,Name2) as Name
from table
jiujiang88 2009-02-01
  • 打赏
  • 举报
回复
if object_id('tempdb..#') is not null drop table #
go
create table #(
ID INT,
NAME1 nVARCHAR(20),
NAME2 nVARCHAR(50))
insert # select 1,'N1',NULL
insert # select 2,'N2',NULL
insert # select 3,NULL,'N3'
insert # select 4,'N4',NULL
select ID,NAME1 from # where NAME1 is not NULL union all
select ID,NAME2 FROM # WHERE NAME1 is NULL order by ID
水族杰纶 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiaolongjun 的回复:]
楼主和1楼的都好好笑!
[/Quote]
hobinly 2009-02-01
  • 打赏
  • 举报
回复
刚才有误,还需改进,如果能确保name1 name2其中一个有数据这样就可以了
select ID,CASE Name1 WHEN NOT NULL THEN NAME1 ELSE NAME2 END AS NAME FROM TABLE
狂风细雨 2009-02-01
  • 打赏
  • 举报
回复
楼主和1楼的都好好笑!
百年树人 2009-02-01
  • 打赏
  • 举报
回复
---测试数据---
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([ID] int,[Name1] varchar(2),[Name2] varchar(2))
insert [tb]
select 1,'N1',null union all
select 2,'N2',null union all
select 3,null,'N3' union all
select 4,'N4',null

---查询---
select
id,
isnull(name1,name2) as [Name]
from tb


---结果---
id Name
----------- ----
1 N1
2 N2
3 N3
4 N4

(所影响的行数为 4 行)

如果Name1不为空去Name1,否则去Name2
hobinly 2009-02-01
  • 打赏
  • 举报
回复
select ID,CASE Name1 WHEN NULL THEN Name2 WHEN NOT NULL THEN NAME1 ELSE NULL END AS NAME FROM TABLE
百年树人 2009-02-01
  • 打赏
  • 举报
回复
如果是
5 N5 N6
怎么显示?
水族杰纶 2009-02-01
  • 打赏
  • 举报
回复
if object_id('tempdb..#')is not null drop table #
go
create table #(ID int, Name1 varchar(10), Name2 varchar(10))
insert # select 1 ,'N1' ,NULL
insert # select 2 , 'N2' , NULL
insert # select 3 , NULL , 'N3'
insert # select 4, 'N4', NULL
select id,[name] from (
select id,name1 [Name] from #
union all
select id,name2 from #)T
where [name]is not null
/*id name
----------- ----------
1 N1
2 N2
4 N4
3 N3*/

34,594

社区成员

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

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