首页/数据/SQL 速查/POW / SQRT / LOG 幂与对数
函数速查60 条

POW / SQRT / LOG 幂与对数

幂、开方与对数:容量估算、增长率、评分加权会用到;注意两库 LOG 的默认底数不同。

SQL 速查数据更新于 2026-10-13

POW / SQRT / LOG 是什么

POW(x, y)(与 POWER 同义)求 x 的 y 次方,SQRT(x) 求平方根,LOG 系列求对数。差异集中在对数函数上:MySQL 的单参数 LOG(x) 是自然对数、LOG(b, x) 指定底数;PostgreSQL 的 ln(x) 才是自然对数,单参数 log(x) 是十进制对数。SQRT 传负数时 MySQL 返回 NULL,PostgreSQL 直接报错。这些函数大多返回浮点类型,业务计算里不要用等值比较。

基本信息

MySQL 幂与根POW(x,y) / POWER(x,y) / SQRT(x),SQRT 传负数返回 NULL
MySQL 对数LOG(x) 为自然对数,LOG(b, x) 指定底数
PostgreSQL 幂与根pow(x,y) / power(x,y) / sqrt(x),sqrt 传负数直接报错
PostgreSQL 对数ln(x) 自然对数,log(x) 十进制对数,log(b, x) 指定底数
返回类型多为双精度浮点;需要精确值时应改用 DECIMAL 运算

典型使用场景

  • 复利、折现与增长率计算
  • 距离计算:欧氏距离与平方和开根
  • 指数增长与衰减模型拟合
  • 对数刻度转换,用于图表展示与打分归一化
  • 容量与费用估算:按幂次增长的存储或流量外推
  • 对数量级差异大的指标先取对数再比较,避免极值主导分析

MySQL 用法

MySQL 用法
SELECT POW(2, 10)        AS p1,        # 1024
       POWER(2, 10)      AS p2,        # 1024,与 POW 等价
       SQRT(144)         AS s1,        # 12
       LOG(2.718281828)  AS ln_approx, # 单参数 LOG 是自然对数
       LOG(10, 1000)     AS log_10;    # 指定底数,结果为 3

PostgreSQL 用法

PostgreSQL 用法
-- 对数函数分工不同,写法不能直接照搬
SELECT ln(2.718281828) AS natural_log,  -- 自然对数
       log(1000)       AS log10_value,  -- 单参数 log 是十进制对数
       log(10, 1000)   AS log_base,     -- 指定底数
       pow(2, 10)      AS p,
       sqrt(144)       AS s;

-- 欧氏距离:先平方求和再开根
SELECT sqrt(power(x2 - x1, 2) + power(y2 - y1, 2)) AS dist FROM points;

函数对照

函数MySQLPostgreSQL
幂POW / POWERpow / power
平方根SQRT(x),负数返回 NULLsqrt(x),负数报错
自然对数LOG(x)ln(x)
十进制对数LOG(10, x)log(x)
指定底数对数LOG(b, x)log(b, x)
MySQL 与 PostgreSQL 的 LOG 语义不同:MySQL 单参数 LOG(x) 是自然对数,PostgreSQL 单参数 log(x) 是十进制对数,迁移时最稳的写法是显式指定底数或使用 ln。
浮点结果不能做等值比较:POW 与 SQRT 返回近似值(例如 SQRT(2) 的平方不严格等于 2),判断相等应使用误差范围,或改用 DECIMAL 类型计算。
展示前先控制精度:幂与对数的结果通常带一长串小数,用 ROUND(x, 2) 之类的写法收口,既便于阅读,也避免把浮点噪声当成真实差异。
对数与开方都有定义域限制:LOG 的参数必须为正数,传 0 或负数时 MySQL 返回 NULL、PostgreSQL 报错;上线前先对输入列做范围校验,别等线上语句报错才发现。

易错点

  • 把 MySQL 的 LOG(x) 语义直接搬到 PostgreSQL,算出完全不同数量级的结果
  • 对负数调用 SQRT:MySQL 静默返回 NULL,PostgreSQL 报错中断语句
  • 拿浮点结果做等值比较或当分组键,出现「看起来相等却不匹配」
  • 大数量级幂运算溢出未做范围校验,结果变成 NULL 或 Infinity

数据来源与参考

  • MySQL 8.0 Reference Manual · Mathematical Functions
  • PostgreSQL Documentation · Mathematical Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌