108 lines
3.4 KiB
SQL
108 lines
3.4 KiB
SQL
-- 修复BigDecimal字段的null值问题
|
||
-- 将null值替换为0.00,避免JSON序列化异常
|
||
|
||
-- ========================================
|
||
-- 1. 修复用户优惠券表的null值
|
||
-- ========================================
|
||
|
||
-- 检查当前null值情况
|
||
SELECT
|
||
'shop_user_coupon null值检查' as table_name,
|
||
COUNT(*) as total_records,
|
||
COUNT(CASE WHEN reduce_price IS NULL THEN 1 END) as null_reduce_price,
|
||
COUNT(CASE WHEN min_price IS NULL THEN 1 END) as null_min_price
|
||
FROM shop_user_coupon;
|
||
|
||
-- 修复reduce_price字段的null值
|
||
UPDATE shop_user_coupon
|
||
SET reduce_price = 0.00
|
||
WHERE reduce_price IS NULL;
|
||
|
||
-- 修复min_price字段的null值
|
||
UPDATE shop_user_coupon
|
||
SET min_price = 0.00
|
||
WHERE min_price IS NULL;
|
||
|
||
-- ========================================
|
||
-- 2. 修复优惠券模板表的null值
|
||
-- ========================================
|
||
|
||
-- 检查当前null值情况
|
||
SELECT
|
||
'shop_coupon null值检查' as table_name,
|
||
COUNT(*) as total_records,
|
||
COUNT(CASE WHEN reduce_price IS NULL THEN 1 END) as null_reduce_price,
|
||
COUNT(CASE WHEN min_price IS NULL THEN 1 END) as null_min_price
|
||
FROM shop_coupon;
|
||
|
||
-- 修复reduce_price字段的null值
|
||
UPDATE shop_coupon
|
||
SET reduce_price = 0.00
|
||
WHERE reduce_price IS NULL;
|
||
|
||
-- 修复min_price字段的null值
|
||
UPDATE shop_coupon
|
||
SET min_price = 0.00
|
||
WHERE min_price IS NULL;
|
||
|
||
-- ========================================
|
||
-- 3. 设置字段默认值(可选)
|
||
-- ========================================
|
||
|
||
-- 为用户优惠券表字段设置默认值
|
||
ALTER TABLE shop_user_coupon
|
||
MODIFY COLUMN reduce_price DECIMAL(10,2) DEFAULT 0.00 COMMENT '满减券-减免金额';
|
||
|
||
ALTER TABLE shop_user_coupon
|
||
MODIFY COLUMN min_price DECIMAL(10,2) DEFAULT 0.00 COMMENT '最低消费金额';
|
||
|
||
-- 为优惠券模板表字段设置默认值
|
||
ALTER TABLE shop_coupon
|
||
MODIFY COLUMN reduce_price DECIMAL(10,2) DEFAULT 0.00 COMMENT '满减券-减免金额';
|
||
|
||
ALTER TABLE shop_coupon
|
||
MODIFY COLUMN min_price DECIMAL(10,2) DEFAULT 0.00 COMMENT '最低消费金额';
|
||
|
||
-- ========================================
|
||
-- 4. 验证修复结果
|
||
-- ========================================
|
||
|
||
-- 检查修复后的情况
|
||
SELECT
|
||
'shop_user_coupon 修复后检查' as table_name,
|
||
COUNT(*) as total_records,
|
||
COUNT(CASE WHEN reduce_price IS NULL THEN 1 END) as null_reduce_price,
|
||
COUNT(CASE WHEN min_price IS NULL THEN 1 END) as null_min_price,
|
||
MIN(reduce_price) as min_reduce_price,
|
||
MIN(min_price) as min_min_price
|
||
FROM shop_user_coupon;
|
||
|
||
SELECT
|
||
'shop_coupon 修复后检查' as table_name,
|
||
COUNT(*) as total_records,
|
||
COUNT(CASE WHEN reduce_price IS NULL THEN 1 END) as null_reduce_price,
|
||
COUNT(CASE WHEN min_price IS NULL THEN 1 END) as null_min_price,
|
||
MIN(reduce_price) as min_reduce_price,
|
||
MIN(min_price) as min_min_price
|
||
FROM shop_coupon;
|
||
|
||
-- ========================================
|
||
-- 5. 检查其他可能的BigDecimal字段
|
||
-- ========================================
|
||
|
||
-- 检查订单相关表的BigDecimal字段
|
||
SELECT
|
||
'shop_order BigDecimal字段检查' as check_type,
|
||
COUNT(*) as total_records,
|
||
COUNT(CASE WHEN order_price IS NULL THEN 1 END) as null_order_price,
|
||
COUNT(CASE WHEN pay_price IS NULL THEN 1 END) as null_pay_price
|
||
FROM shop_order;
|
||
|
||
-- 如果发现null值,可以执行以下修复
|
||
/*
|
||
UPDATE shop_order SET order_price = 0.00 WHERE order_price IS NULL;
|
||
UPDATE shop_order SET pay_price = 0.00 WHERE pay_price IS NULL;
|
||
*/
|
||
|
||
SELECT 'BigDecimal null值修复完成!' as result;
|