SQL如何将price_target列的NULL值替换为开盘价上浮10%的计算值
解决方案
场景1:仅查询时替换NULL(不修改原表数据)
你之前的CASE表达式存在两个问题:
- 未加
ELSE price_target逻辑,导致非NULL的目标价会被处理为NULL - 未给计算列指定和原字段一致的别名,因此生成了新列
CASE表达式写法
SELECT stock_tickers, open, CASE WHEN price_target IS NULL THEN open * 1.1 ELSE price_target END AS price_target FROM 你的表名;
更简洁的COALESCE函数写法
COALESCE函数会返回参数列表中第一个非NULL值,写法更精简:
SELECT stock_tickers, open, COALESCE(price_target, open * 1.1) AS price_target FROM 你的表名;
场景2:直接修改原表的price_target字段值
如果需要永久更新表中的NULL值,可以用UPDATE语句:
UPDATE 你的表名 SET price_target = open * 1.1 WHERE price_target IS NULL;
注意:修改原表数据前建议先执行
SELECT * FROM 你的表名 WHERE price_target IS NULL验证待修改的数据范围,避免误操作。
内容的提问来源于stack exchange,提问作者TommyK
相关产品推荐
相关产品推荐

