数据库--sqlserver--sqlserver 查询 值如果为NULL则显示0-解决方法

方法1:

isnull(字段名称,0) as 字段名称

--字符型
select isnull(mycol,'0') as newid from mytable
--整型
select isnull(mycol,0) as newid from mytable

方法2:

columnName为字段名

case when columnName is null then 0 else columnName end

例如:

SELECT tt.start_date,
       tt.start_hour,
       tt.start_minute,
       tt.team_num,
       tt.count,
       tt.team_num_pk,
       
CASE
         WHEN tt.countpk IS NULL THEN 0
         ELSE tt.countpk

       END
FROM   (SELECT start_date,
               start_hour,
               start_minute,
               team_num,
               (SELECT Sum(count) AS count
                FROM   t_world_cup_guess_transaction_m t
                WHERE  t.team_num = c.team_num
                       AND t.match_num = c.match_num) AS count,
               team_num_pk,
               (SELECT Sum(count) AS count
                FROM   t_world_cup_guess_transaction_m t
                WHERE  t.team_num = c.team_num_pk
                       AND t.match_num = c.match_num) AS countpk
        FROM  t_world_cup_guess_competition_process  c) tt 


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,以下是一份宿舍管理数据库的设计,使用 SQL Server T-SQL 语言实现: **1. 数据库表设计** 1.1 宿舍表 dormitory ```sql CREATE TABLE dormitory ( id INT PRIMARY KEY, building VARCHAR(20), number VARCHAR(10), capacity INT, current_count INT, gender VARCHAR(10) ); ``` 1.2 学生表 student ```sql CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(20), gender VARCHAR(10), major VARCHAR(20), grade VARCHAR(10), phone VARCHAR(20) ); ``` 1.3 入住表 check_in ```sql CREATE TABLE check_in ( id INT PRIMARY KEY, dormitory_id INT FOREIGN KEY REFERENCES dormitory(id), student_id INT FOREIGN KEY REFERENCES student(id), check_in_date DATE, check_out_date DATE ); ``` **2. 数据库视图设计** 2.1 宿舍信息查询视图 dormitory_info ```sql CREATE VIEW dormitory_info AS SELECT d.id, d.building, d.number, d.capacity, d.current_count, d.gender, s.name, s.gender, s.major, s.grade, s.phone FROM dormitory d LEFT JOIN check_in ci ON d.id = ci.dormitory_id LEFT JOIN student s ON ci.student_id = s.id; ``` 2.2 学生信息查询视图 student_info ```sql CREATE VIEW student_info AS SELECT s.id, s.name, s.gender, s.major, s.grade, s.phone, d.building, d.number, d.gender FROM student s LEFT JOIN check_in ci ON s.id = ci.student_id LEFT JOIN dormitory d ON ci.dormitory_id = d.id; ``` **3. 数据库存储过程设计** 3.1 入住存储过程 check_in_procedure ```sql CREATE PROCEDURE check_in_procedure @dormitory_id INT, @student_id INT, @check_in_date DATE AS BEGIN -- 检查宿舍是否已满员 IF EXISTS ( SELECT * FROM dormitory WHERE id = @dormitory_id AND current_count >= capacity ) BEGIN RAISERROR('宿舍已满员,无法入住!', 16, 1); RETURN; END -- 检查学生是否已入住其他宿舍 IF EXISTS ( SELECT * FROM check_in WHERE student_id = @student_id AND check_out_date IS NULL ) BEGIN RAISERROR('学生已入住其他宿舍,无法再次入住!', 16, 1); RETURN; END -- 新增一条入住记录,并更新宿舍表中的当前入住人数 INSERT INTO check_in (dormitory_id, student_id, check_in_date) VALUES (@dormitory_id, @student_id, @check_in_date); UPDATE dormitory SET current_count = current_count + 1 WHERE id = @dormitory_id; END ``` 3.2 退宿存储过程 check_out_procedure ```sql CREATE PROCEDURE check_out_procedure @check_in_id INT, @check_out_date DATE AS BEGIN -- 检查学生是否已入住该宿舍 IF NOT EXISTS ( SELECT * FROM check_in WHERE id = @check_in_id ) BEGIN RAISERROR('该入住记录不存在!', 16, 1); RETURN; END -- 更新入住表中的退宿日期,并更新宿舍表中的当前入住人数 UPDATE check_in SET check_out_date = @check_out_date WHERE id = @check_in_id; UPDATE dormitory SET current_count = current_count - 1 WHERE id = ( SELECT dormitory_id FROM check_in WHERE id = @check_in_id ); END ``` 以上是一份简单的宿舍管理数据库设计,使用 SQL Server T-SQL 实现。具体实现方式需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿竹痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值