mysql - SQL查询比较十进制值不匹配并返回NULL值
问题描述
我有一个 SQL 查询,并且在它咨询的字段之间有一个验证,该验证比较一个名为“tipo”的字段,并根据它为“dias_validez”字段分配一个值,问题是当大小写是像“0.7”这样的十进制数或“1.5”,验证不起作用并返回 NULL 值
SELECT
Usuario.`id_usuario`,
Usuario.`nombre_usuario`,
Usuario.`groupon`,
Groupon.`tipo`,
DATEDIFF(NOW(), Facturacion.`fecha_inicio`) AS dias_pasados,
Perfil.`comoseentero`,
CASE
WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=24 THEN 0
WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >24 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=30 THEN 1
WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >30 THEN 2
WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=54 THEN 0
WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >54 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=54 THEN 1
WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >60 THEN 2
WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=84 THEN 0
WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >84 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=94 THEN 1
WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >90 THEN 2
END AS resultado,
CASE
WHEN Groupon.`tipo` = 1 THEN 30
WHEN Groupon.`tipo` = 2 THEN 60
WHEN Groupon.`tipo` = 3 THEN 90
WHEN Groupon.`tipo` = 0.7 THEN 21
WHEN Groupon.`tipo` = 1.2 THEN 35
WHEN Groupon.`tipo` = 1.5 THEN 45
WHEN Groupon.`tipo` = 12 THEN 365
WHEN Groupon.`tipo` = 0 THEN 'N/A'
END AS dias_validez
FROM
Usuario
JOIN Groupon
ON Usuario.`groupon` = Groupon.`groupon`
JOIN Facturacion
ON Facturacion.`id_proceso` = Usuario.`id_usuario`
JOIN Perfil
ON Usuario.`id_usuario` = Perfil.`id_proceso_perfil` GROUP BY Usuario.id_usuario ORDER BY resultado;
谢谢您的意见。请原谅我的英语水平!最好的祝福
解决方案
解决方案非常简单
WHEN CAST(Groupon.`tipo` AS DECIMAL(10,3)) = 0.7 THEN 21
只需要将浮点数转换为十进制并且查询运行良好。
推荐阅读
- angular - 给定json对象数组中的属性,如何从JSON中过滤数据
- amazon-s3 - S3 存储桶主体设置为 OAI,但 CloudFront 无法获取对象?
- python - NoneType 对象在类定义的装饰器上不可调用
- julia - 从目录中读取多个txt文件
- nginx - Nginx:Error_log 和 Access_log 最大大小
- typescript - Vue Typescript 组件 Jest 测试不会在 html 中呈现值
- python - 如何将 int64 转换为日期时间?
- c - 验证输入和重复语句
- python - ValueError:两个形状中的维度 2 必须相等,但为 512 和 511。形状为 [?,384,512] 和 [?,384,511]
- php - Laravel Eloquent Join On Exists 查询