You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL技术问询:如何为表添加对Value列执行MOD 10计算的计算列

为数据表添加MOD 10计算列的实现方法

嘿,这个需求挺常见的,我来给你分几种主流数据库的情况讲讲具体怎么实现👇

1. SQL Server

在SQL Server里,直接用%运算符表示取模,通过ALTER TABLE语句就能添加计算列:

ALTER TABLE YourTableName
ADD Value_Mod10 AS (Value % 10);

这里需要把YourTableName替换成你实际的数据表名,Value_Mod10是新增计算列的名称,括号里的Value % 10就是对目标列执行MOD 10的核心逻辑。

2. MySQL / MariaDB

MySQL支持两种写法:用%运算符或者MOD()函数,同时还能选择计算列是存储型(STORED)还是虚拟型(VIRTUAL):

  • 存储型(实际存储数据,查询更快):
ALTER TABLE YourTableName
ADD COLUMN Value_Mod10 INT GENERATED ALWAYS AS (Value % 10) STORED;
  • 虚拟型(不存储数据,查询时实时计算,节省空间):
ALTER TABLE YourTableName
ADD COLUMN Value_Mod10 INT GENERATED ALWAYS AS (MOD(Value, 10)) VIRTUAL;

3. PostgreSQL

PostgreSQL同样支持%和mod()函数两种写法,添加计算列的语法如下:

ALTER TABLE YourTableName
ADD COLUMN Value_Mod10 INT GENERATED ALWAYS AS (Value % 10) STORED;

或者用函数形式:

ALTER TABLE YourTableName
ADD COLUMN Value_Mod10 INT GENERATED ALWAYS AS (mod(Value, 10)) STORED;

4. Oracle

Oracle里需要用MOD()函数来实现取模,添加虚拟计算列的语法是:

ALTER TABLE YourTableName
ADD Value_Mod10 NUMBER GENERATED ALWAYS AS (MOD(Value, 10)) VIRTUAL;

几个小提醒

  • 记得把YourTableName和Value_Mod10换成你实际需要的表名和列名
  • 如果Value列存在NULL值,取模结果也会是NULL,你可以用COALESCE(Value % 10, 0)把NULL转为0,根据自己的业务需求调整
  • 存储型和虚拟型计算列各有优劣:存储型占空间但查询快,虚拟型省空间但每次查询都要计算,按需选择就好

内容的提问来源于stack exchange,提问作者Swulph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:54:53