我想从这些条件中检索表中的一些列值.
>如果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).
任何建议将非常感谢!
最佳答案
如果你这样写:
原文链接:https://www.f2er.com/mysql/433690.htmlSELECT
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);
告诉我它是否正常