加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql – 如果列值为NULL,如何实现默认值?

发布时间:2021-03-06 19:29:14 所属栏目:编程 来源:网络整理
导读:我想从这些前提中检索表中的一些列值. 假如value为NULL(或)Empty String,则返回一些用户界说的值 假如不是上述前提,则返回其值. 我怎么能搞清晰? 这是我的表查询.. CREATE TABLE AUCTION_CAR_BID(bid_seq bigint NOT NULL AUTO_INCREMENT,auction_car_seq b

我想从这些前提中检索表中的一些列值.

>假如value为NULL(或)Empty String,则返回一些用户界说的值
>假如不是上述前提,则返回其值.

我怎么能搞清晰?

这是我的表查询..

CREATE TABLE AUCTION_CAR_BID(
bid_seq bigint NOT NULL AUTO_INCREMENT,auction_car_seq bigint NOT NULL,bid_group_seq bigint NOT NULL,bid_price int DEFAULT 0 NOT NULL,over_bid_price int DEFAULT -1 NOT NULL,result_id int DEFAULT 0 NOT NULL,remark varchar(500),PRIMARY KEY (bid_seq)) 
ENGINE = InnoDB DEFAULT CHARACTER SET utf8;

这是我全力的代码来得到它..

SELECT
    COALESCE(OVER_BID_PRICE,-1)
FROM
    AUCTION_CAR_BID
WHERE
    BID_SEQ = 2354435345;

另一个:

SELECT
    CASE
        WHEN OVER_BID_PRICE IS NULL
        OR TRIM(OVER_BID_PRICE) = '' THEN -1
        ELSE OVER_BID_PRICE
    END OVER_BID_PRICE
FROM
    AUCTION_CAR_BID
WHERE
    BID_SEQ = 2354435345;

可是假如给定的id不在我的表中,我老是获得空的String值(不是-1).

任何提议将很是感激!

最佳谜底 假如你这样写:

SELECT
    COALESCE(OVER_BID_PRICE,-1)
FROM
    AUCTION_CAR_BID
WHERE
    BID_SEQ = 2354435345;

功效可所以两种范例.

第一个功效:您的查询没有返回行!您的WHERE前提不令人满足,因此您将读取NULL

第二个功效:您的查询返回行但您的字段值为NULL,在这种环境下您的COALESCE事变正常

要办理你可以实行这个:

SELECT COALESCE(
   (SELECT
   COALESCE(OVER_BID_PRICE,-1)
   FROM AUCTION_CAR_BID
   WHERE BID_SEQ = 2354435345),-1);

汇报我它是否正常

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读