求一条SQL语句 判断某字段为空显示另一个字段 否则显示此字段

时间:2020-12-02 15:08:34
如题

而且我是和C#程序联合一起用的  并不是select 出来一条  而是select 出来可能上百 上千那样
比如有2个字段 A,B
如果B字段为空 就显示A  否则就显示B  请问该如何写,,谢谢

16 个解决方案

#1


isnull(b,a)

#2




IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT N'张三',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

-->SQL查询如下:
select ISNULL(a,b) from tb 
/*
----------
张三
张三
外语

(3 行受影响)
*/

#3


isnull?  我那个字段里面 只是没存东西 就是例如 空字符串 "" 这样  并不是 <Null>  这个能好用么?
我去试下看看

#4


--还有一种情况

IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT '',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

-->SQL查询如下:
select ISNULL(nullif(a,''),b) from tb 
/*
----------
张三
语文
外语

(3 行受影响)
*/

#5


引用 3 楼 xunzhaohexie 的回复:
isnull? 我那个字段里面 只是没存东西 就是例如 空字符串 "" 这样 并不是 <Null> 这个能好用么?
我去试下看看
想到了。

#6


饿,,不行啊,,,isnull 真的不可以,,显示出来的是空白,,因为我那个B字段并不是没有就用 null  而是用空字符串保存进去的

#7


sql 新手  看不懂饿,,,能麻烦你 直接用  A和B字段给我演示一下么,,谢谢

#8


引用 6 楼 xunzhaohexie 的回复:
饿,,不行啊,,,isnull 真的不可以,,显示出来的是空白,,因为我那个B字段并不是没有就用 null 而是用空字符串保存进去的
在你回完27秒又回了。

#9


嗯,,我看到你后来发的那个了,,但是,,,真的看不懂,,哎,,能麻烦你用 A和B字段给我演示下么,,,十分感谢

#10


引用 7 楼 xunzhaohexie 的回复:
sql 新手 看不懂饿,,,能麻烦你 直接用 A和B字段给我演示一下么,,谢谢



IF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT '',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

SELECT CASE WHEN ISNULL(A,'')='' THEN B ELSE A END  FROM TB 
/*
----------
张三
语文
外语

(3 行受影响)
*/
这个看懂了吧

#11


select case when a='' or a is null then b else a end  from Tb

#12


谢谢,,我再试下 这个能看懂了

#13


先看一下11楼的,
再看一下10楼的,关键是要会case when及isnull的用法,不难的

#14


引用 4 楼 htl258 的回复:
SQL code
--还有一种情况

IF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SEL……

其实这个很好看懂...nullif就是满足这个(a,'')条件,则把这个字段置为null,则可以使用isnull函数了

#15


isnull(x,y)

#16


isnull(a,b)
或者用case也可以。
select case when a='' or a is null then b else a end from Tb。

#1


isnull(b,a)

#2




IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT N'张三',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

-->SQL查询如下:
select ISNULL(a,b) from tb 
/*
----------
张三
张三
外语

(3 行受影响)
*/

#3


isnull?  我那个字段里面 只是没存东西 就是例如 空字符串 "" 这样  并不是 <Null>  这个能好用么?
我去试下看看

#4


--还有一种情况

IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT '',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

-->SQL查询如下:
select ISNULL(nullif(a,''),b) from tb 
/*
----------
张三
语文
外语

(3 行受影响)
*/

#5


引用 3 楼 xunzhaohexie 的回复:
isnull? 我那个字段里面 只是没存东西 就是例如 空字符串 "" 这样 并不是 <Null> 这个能好用么?
我去试下看看
想到了。

#6


饿,,不行啊,,,isnull 真的不可以,,显示出来的是空白,,因为我那个B字段并不是没有就用 null  而是用空字符串保存进去的

#7


sql 新手  看不懂饿,,,能麻烦你 直接用  A和B字段给我演示一下么,,谢谢

#8


引用 6 楼 xunzhaohexie 的回复:
饿,,不行啊,,,isnull 真的不可以,,显示出来的是空白,,因为我那个B字段并不是没有就用 null 而是用空字符串保存进去的
在你回完27秒又回了。

#9


嗯,,我看到你后来发的那个了,,但是,,,真的看不懂,,哎,,能麻烦你用 A和B字段给我演示下么,,,十分感谢

#10


引用 7 楼 xunzhaohexie 的回复:
sql 新手 看不懂饿,,,能麻烦你 直接用 A和B字段给我演示一下么,,谢谢



IF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SELECT '',N'语文',70,18 UNION ALL
SELECT NULL,N'外语',80,18 

SELECT CASE WHEN ISNULL(A,'')='' THEN B ELSE A END  FROM TB 
/*
----------
张三
语文
外语

(3 行受影响)
*/
这个看懂了吧

#11


select case when a='' or a is null then b else a end  from Tb

#12


谢谢,,我再试下 这个能看懂了

#13


先看一下11楼的,
再看一下10楼的,关键是要会case when及isnull的用法,不难的

#14


引用 4 楼 htl258 的回复:
SQL code
--还有一种情况

IF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
GO
CREATE TABLE [tb](a NVARCHAR(10),b NVARCHAR(10),[成绩] INT,[年龄] INT)
INSERT [tb]
SELECT N'张三',NULL,50,18 UNION ALL
SEL……

其实这个很好看懂...nullif就是满足这个(a,'')条件,则把这个字段置为null,则可以使用isnull函数了

#15


isnull(x,y)

#16


isnull(a,b)
或者用case也可以。
select case when a='' or a is null then b else a end from Tb。