当前位置: 首页 > news >正文

SQL计算列

SqlServer:

ALTER TABLE KC_BILLHEAD ADD bill_no AS coalesce(billno ,'' ) PERSISTED;

这是一个SQL语句,用于向表KC_BILLHEAD添加一个计算列bill_no。让我解释一下这个语句的各个部分:

ALTER TABLE KC_BILLHEAD - 修改表KC_BILLHEAD的结构
ADD bill_no - 添加一个名为bill_no的列
AS coalesce(billno, '') - 这个列的值是通过coalesce函数计算得到的,它会返回第一个非空值
PERSISTED - 表示这个计算列的值会被物理存储在表中

这个语句的作用是创建一个新列bill_no,它会:

如果billno列有值,则bill_no等于billno的值
如果billno列为NULL,则bill_no等于空字符串''
由于指定了PERSISTED,这个值会被实际存储在表中而不是每次计算

这是一个常见的SQL技巧,用于确保列中不会有NULL值,而是用空字符串代替。

  • 如果为 billno 列提供值,bill_no 会自动根据 COALESCE(billno, '') 的规则计算结果并存储(因为它是 PERSISTED)。
  • 如果更新 billno 列的值,bill_no 也会自动重新计算并更新存储的值。

oracle:


ALTER TABLE KC_BILLHEAD ADD (
    bill_no VARCHAR2(50) GENERATED ALWAYS AS (NVL(billno, '')) VIRTUAL
);
 

mysql:

ALTER TABLE KC_BILLHEAD ADD COLUMN bill_no VARCHAR(50) 
    GENERATED ALWAYS AS (IFNULL(billno, '')) STORED;
 

-----------------------------------------------------------------------------------------------------------

--查询计算列

SQL Server

通过系统视图 sys.computed_columns 查询是否为计算列

SELECT is_computed, definition 
FROM sys.computed_columns 
WHERE object_id = OBJECT_ID('表名') AND name = '列名';

is_computed=1 表示是计算列,definition 列显示计算公式

Oracle
查询 ALL_TAB_COLS 视图的 VIRTUAL_COLUMN 字段

SELECT column_name, virtual_column, data_default 
FROM ALL_TAB_COLS 
WHERE table_name = '表名' AND column_name = '列名';

VIRTUAL_COLUMN='YES' 表示是虚拟列(计算列)

MySQL
通过 INFORMATION_SCHEMA.COLUMNS 表的 GENERATION_EXPRESSION 字段判断:

SELECT column_name, generation_expression 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = '表名' AND COLUMN_NAME = '列名';

若 GENERATION_EXPRESSION 不为空,则为生成列(计算列)


文章转载自:

http://X3rHDu8I.rzmzm.cn
http://ZQ9IZ4Dw.rzmzm.cn
http://mNtDNavv.rzmzm.cn
http://b5WlUWt8.rzmzm.cn
http://7c4quJqw.rzmzm.cn
http://RVo2cDNt.rzmzm.cn
http://LEqB0I4F.rzmzm.cn
http://z8vre8hT.rzmzm.cn
http://zlIdFXyq.rzmzm.cn
http://gOHcEPIp.rzmzm.cn
http://gAQPAAQQ.rzmzm.cn
http://dap0qrOf.rzmzm.cn
http://K8P8GWrK.rzmzm.cn
http://mPpXbieH.rzmzm.cn
http://rs1BuhT8.rzmzm.cn
http://t9kJN0oa.rzmzm.cn
http://vbbHztts.rzmzm.cn
http://YrXwYgk6.rzmzm.cn
http://liWPx8u6.rzmzm.cn
http://YZeWqM8w.rzmzm.cn
http://ZFILXyLH.rzmzm.cn
http://70h0qMVk.rzmzm.cn
http://jFYwPKHS.rzmzm.cn
http://pf89OWwb.rzmzm.cn
http://W8dMdjbw.rzmzm.cn
http://ahmcfasF.rzmzm.cn
http://4WAFfZ9Y.rzmzm.cn
http://zmCgOWdd.rzmzm.cn
http://ygEpWnf4.rzmzm.cn
http://IzsrSyGO.rzmzm.cn
http://www.dtcms.com/a/217352.html

相关文章:

  • vue展示修改前后对比,并显示修改标注diff
  • YOLOv2 深度解析:目标检测领域的进阶之路
  • 借教室--二分+查分
  • 柠檬(lemon)是什么东西?
  • leetcode:1688. 比赛中的配对次数(python3解法,数学相关算法题)
  • 深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河
  • 【脚本】一键部署脚本
  • DH加密详解
  • SD08_解决由于anaconda版本过低无法安装高版本python的问题
  • camera_venc_thread线程获取高分辨率编码码流
  • PH热榜 | 2025-05-27
  • MySQL connection close 后, mysql server上的行为是什么
  • Python 实现简易版的文件管理(结合网络编程)
  • 一键重装Windows/Linux系统,支持虚拟服务器
  • redis高并发问题
  • (自用)Java学习-5.15(模糊搜索,收藏,购物车)
  • 公共场所人脸识别设备备案合规要点
  • 实战分享:DolphinScheduler 中 Shell 任务环境变量最佳配置方式
  • Python 实现桶排序详解
  • SNTP 协议详解:网络时间同步的轻量级解决方案
  • TLE9893-2QKW62S新建Keil MDK工程
  • VIN码识别解析接口如何用C#进行调用?
  • MySQL推出全新Hypergraph优化器,正式进军OLAP领域!
  • STM32CubeMX,arm-none-eabi-gcc简单试用
  • 软件开发方法:从结构化到领域驱动的演进
  • AI编译器战争:MLIR vs. OpenAI Triton的算子优化哲学对比 ——从矩阵乘法案例看两种范式的设计差异
  • go中的channel
  • Python Day34 学习
  • AXI3、AXI4 和 AXI5 的详细差异对比
  • Python条件语句完全指南:从if-else到模式匹配