SQL中字段算术运算直接用+?×÷,无需函数;需注意空格、括号优先级、类型一致性、NULL传播、显式别名、数据库差异及WHERE/ORDER BY中不可用别名。SELECT 中直接用算术运算符做字段计算SQL 里对字段做加减乘除,不需要额外函数,直接在 SELECT 后写表达式就行。比如查商品售价打 9 折后的价格,写成 price * 0.9 就能出结果。常见错误是漏掉空格或括号导致优先级混乱,比如 price + 10 * 0.9 实际算的是 price + 9,不是 (price + 10) * 0.9。数值类型不一致也会隐式转换失败------MySQL 可能容忍,PostgreSQL 遇到 text 字段参与 + 运算会直接报错 operator does not exist: text + integer。整数除法要注意:SQLite 和 PostgreSQL 默认返回整数(5 / 2 → 2),想得小数得先转 CAST(5 AS REAL) / 2 或写成 5.0 / 2NULL 参与任何算术运算结果都是 NULL,别指望它当 0 处理;真要兜底,得显式用 COALESCE(price, 0) * 0.9字符串字段误当数字用很常见,比如把 status(值为 'active')写进 + 1,MySQL 会悄悄转成 0 再加,PostgreSQL 直接拒了用 AS 给计算结果起别名,避免列名丢失算术表达式默认没有列名,查询结果里那列可能显示成 ?column?(PostgreSQL)、expr(SQLite)或者干脆空着。必须用 AS 显式命名,否则下游代码取不到字段,导出 CSV 时列头也糊里糊涂。别名本身不参与计算,只是输出标签,所以不能在 WHERE 里引用------比如 SELECT price * 0.9 AS discounted_price WHERE discounted_price > 100 会报错,得写成 WHERE price * 0.9 > 100 或者套一层子查询。AS 关键字可省略,price * 0.9 discounted_price 也能用,但加 AS 更清晰,尤其在团队协作或复杂查询里别名里有空格或特殊字符(如连字符)必须用双引号括起来:price * 0.9 AS "discounted-price",否则语法错误别名不能和表里已有字段同名且没加表前缀,否则 ORDER BY 时可能歧义------数据库优先认原始字段名不同数据库对运算符和类型转换的容忍度差异同一个表达式,在 MySQL、PostgreSQL、SQLite 甚至 SQL Server 上行为可能完全不同。核心分歧点在「宽松转换」还是「严格类型检查」。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
嘘神秘用31 分钟前
布:AI 驱动的 Redis 客户端,更快、更直观我是坏垠2 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念东北小狐狸-Hellxz2 小时前
Redis 哨兵搭建+ACL权限控制测试秃头怪3 小时前
如何评估自动化测试脚本的编写时间和维护工作量?姚青&3 小时前
测试左移体系技术民工之路3 小时前
Python Socket编程零基础实战教程(TCP/UDP通信完整版)EW Frontier3 小时前
三级跳突破864维动作空间——QMIX-Hierarchical多无人机协同通信方法全解析【附python代码】研究员子楚4 小时前
GEO行业发展标准体系白皮书V2.0-第09卷 · 适配篇:硅基主权伦理宪章与行业适配宣言中微极客4 小时前
TensorFlow模型量化实战:从精度到延迟的优化指南