ACCESS/SQL SERVER保存软件版本号为整数类型,转成字符串

在 Access 中,若已将版本号(如1.3.15)转换为整数形式(如10315,即1*10000 + 3*100 + 15),可以通过 SQL 的数学运算反向解析出原始版本号格式(主版本.次版本.修订号)。

实现思路

通过除法和取余运算拆分整数:

  • 主版本号:整数除以10000的商(整数部分)
  • 次版本号:整数除以10000的余数,再除以100的商
  • 修订号:整数除以100的余数

SQL 查询示例

假设表名为SoftwareVersions,存储整数版本号的字段为NumericVersion,则查询语句如下:

SELECT NumericVersion,-- 主版本号:除以10000取整数部分Int(NumericVersion / 10000) AS Major,-- 次版本号:先取除以10000的余数,再除以100取整数部分Int((NumericVersion Mod 10000) / 100) AS Minor,-- 修订号:取除以100的余数NumericVersion Mod 100 AS Patch,-- 拼接为原始版本号格式(如1.3.15)Int(NumericVersion / 10000) & "." & Int((NumericVersion Mod 10000) / 100) & "." & (NumericVersion Mod 100) AS VersionText
FROM SoftwareVersions;

说明

  1. 运算逻辑

    • Int(NumericVersion / 10000):提取主版本(如10315 / 10000 = 1.0315,取整数得1
    • NumericVersion Mod 10000:先获取10315 - 1*10000 = 315,再除以100取整数得3(次版本)
    • NumericVersion Mod 100:直接获取10315除以100的余数15(修订号)
  2. 拼接格式

    • 使用&符号连接字符串(Access 中字符串拼接运算符为&,而非 SQL Server 的+
    • 最终得到1.3.15格式的版本号文本
  3. 适用范围

    • 仅适用于按主版本*10000 + 次版本*100 + 修订号规则转换的整数版本号
    • 若版本号规则变更(如基数调整为 1000),需同步修改除数(如10000001000等)

通过上述 SQL,可直接从整数形式反向解析出易读的版本号格式,方便查询和展示。


进阶方案:拆分字段法(多 INT 字段)

1. 实现逻辑

将版本号拆分为主、次、修订号字段,直接按数值排序:

CREATE TABLE SoftwareVersions (Id INT PRIMARY KEY,Major INT NOT NULL,Minor INT NOT NULL,Patch INT NOT NULL,INDEX IX_Version NONCLUSTERED (Major, Minor, Patch)
);
2. 插入与排序示例sql
-- 插入数据
INSERT INTO SoftwareVersions (Major, Minor, Patch)
VALUES (1, 3, 5),(1, 3, 51);-- 按版本号升序查询
SELECT CONCAT(Major, '.', Minor, '.', Patch) AS Version
FROM SoftwareVersions 
ORDER BY Major, Minor, Patch;
-- 结果:1.3.5 → 1.3.51

3. 优点与注意事项

  • 优点:排序最准确,适合复杂版本号(如包含预发布标识)。
  • 注意事项:增加表字段数量,需维护字段间一致性。

数值转换法(INT/BIGINT 存储)

1. 实现逻辑

将版本号各部分乘以基数的幂次后相加:

-- 公式:major * 1000000 + minor * 1000 + patch
DECLARE @version NVARCHAR(20) = '1.3.51';
SELECT CAST(PARSENAME(@version, 3) AS INT) * 1000000 +CAST(PARSENAME(@version, 2) AS INT) * 1000 +CAST(PARSENAME(@version, 1) AS INT) AS NumericVersion;
-- 输出:10351

2. 表结构设计

CREATE TABLE SoftwareVersions (Id INT PRIMARY KEY,Version NVARCHAR(20) NOT NULL,NumericVersion INT NOT NULL,  -- 存储转换后的数值INDEX IX_NumericVersion NONCLUSTERED (NumericVersion)
);
插入与排序示例sql
-- 插入数据
INSERT INTO SoftwareVersions (Version, NumericVersion)
VALUES ('1.3.5', 10305),('1.3.51', 10351);-- 按版本号升序查询
SELECT Version 
FROM SoftwareVersions 
ORDER BY NumericVersion;
-- 结果:1.3.5 → 1.3.51

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93801.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程语言学习

精通 Java、Scala、Python、Go、Rust、JavaScript ✅ 1. Java 面向对象编程(OOP)、异常处理、泛型JVM 原理、内存模型(JMM)、垃圾回收(GC)多线程与并发(java.util.concurrent)Java 8…

软件测试:如何利用Burp Suite进行高效WEB安全测试

Burp Suite 被广泛视为 Web 应用安全测试领域的行业标准工具集。要发挥其最大效能,远非简单启动扫描即可,而是依赖于测试者对其模块化功能的深入理解、有机组合及策略性运用。一次高效的测试流程,始于精细的环境配置与清晰的测试逻辑。测试初…

华为认证 HCIA/HCIP/HCIE 全面解析(2025 版)

说实话,想在IT行业站稳脚跟,没有过硬的技术和资历,光凭热情和一腔干劲根本不行。 而华为认证,作为业内公认的“技术护照”,已经成了许多人打开职场大门的关键。 你会发现,越来越多的企业在招聘时&#xff0…

ComfyUI-3D-Pack:3D创作的AI神器

一、应用介绍 单图转3D网格:输入一张角色图,能输出基本成型的3D Mesh,还自带UV展开和贴图输出,可直接导入到Blender等软件中使用。多视角图像生成:可以基于算法生成围绕3D模型的多视角图像,用于3D模型展示…

【java面试day15】mysql-聚簇索引

文章目录问题💬 Question 1💬 Question 2相关知识问题 💬 Question 1 Q:什么是聚簇索引,什么是非聚簇索引? A:聚簇索引主要是指数据与索引放到一块,B树的叶子节点保存了整行数据&a…

【typenum】 16 无符号整数标记

一、源码 这段代码是 Rust 中用于实现编译时无符号整数的核心部分。它定义了一个 Unsigned trait 并为两种类型实现了该 trait&#xff1a;UTerm&#xff08;表示零&#xff09;和 UInt<U, B>&#xff08;表示非零数字&#xff09;。 定义&#xff08;marker_traits.rs&a…

重温k8s基础概念知识系列四(服务、负载均衡和联网)

文章目录1、Kubernetes 网络模型2、为什么需要 Service&#xff1f;2.1、定义service2.2、Service的类型2.3、Service 工作原理2.4、Service 与 DNS3、Ingress&#xff08;高级流量管理&#xff09;3.1、定义Ingress 资源3.2、Ingress 规则4、常见面试高频问答5、总结1、Kubern…

基于SpringBoot的停车场管理系统【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Nginx前后端分离反代(VUE+FastAPI)

原文链接&#xff1a;Nginx前后端分离反代&#xff08;VUEFastAPI&#xff09; < Ping通途说 0.前言 工作需求自己全栈开发了一个后台后端&#xff0c;要求前后端分离&#xff0c;即nginx静态代理前端文件&#xff0c;再代理后端接口。以前自己也遇过这种情况&#xff0c;但…

豆包1.5 Vision Lite 对比 GPT-5-min,谁更适合你?实测AI模型选型利器 | AIBase

“团队要上线一个智能客服系统&#xff0c;预算有限&#xff0c;中文场景为主&#xff0c;偶尔需要读图——该选豆包1.5还是GPT-5-min&#xff1f;” “个人开发者想接大模型API做写作助手&#xff0c;要求响应快、成本低&#xff0c;Claude Haiku、Moonshot、GPT-5-min 哪个更…

Swift与C++混编深度解决方案:手动桥接 vs SwiftyCPP框架性能终极评测

Swift与C混编深度解决方案&#xff1a;手动桥接 vs SwiftyCPP框架性能终极评测一、技术背景与行业痛点1.1 Swift与C互操作现状1.2 行业痛点数据二、解决方案架构对比2.1 手动桥接OC中间层实现细节&#xff1a;2.2 SwiftyCPP自动框架技术突破&#xff1a;三、性能深度评测3.1 测…

[Oracle数据库] Oracle 常用函数

目录 一、先搞懂这些基础约定 二、数值函数&#xff1a;处理数字的 “小帮手” 1️⃣MOD (n1, n2)&#xff1a;取余数 2️⃣ROUND (n1 [, n2])&#xff1a;四舍五入 3️⃣TRUNC (n1 [, n2])&#xff1a;截断&#xff08;不四舍五入&#xff09; 其他常用数值函数 三、字…

Pytorch模型复现笔记-STN(空间注意力Transformer网络)讲解+架构搭建(可直接copy运行)+ MNIST数据集视角调整实验

Spatial Transformer Networks 本文了讲述STN的基本架构&#xff0c;空间几何注意力模块的基本原理&#xff0c;冒烟测试以及STN在MNIST数据集用于模型自动调整图片视角的实验&#xff0c;如果大家有不懂或者发现了错误的地方&#xff0c;欢迎讨论。 中文名&#xff1a;空间Tra…

【LeetCode】16. 最接近的三数之和

文章目录16. 最接近的三数之和题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解题思路算法分析问题本质分析排序双指针法详解双指针移动策略搜索过程可视化各种解法对比算法流程图边界情况处理时间复杂度分析空间复杂度分析关键优化点实际应用场景测试用例设计…

微信小程序实现蓝牙开启自动播放BGM

下面是一个完整的微信小程序实现方案&#xff0c;当蓝牙设备连接时自动播放背景音乐(BGM)。实现思路监听蓝牙设备连接状态当检测到蓝牙设备连接时&#xff0c;自动播放音乐当蓝牙断开时&#xff0c;停止音乐播放处理相关权限和用户交互完整代码实现1. 项目结构text/pages/index…

XML 序列化与操作详解笔记

一、XML 基础概念XML&#xff08;eXtensible Markup Language&#xff0c;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言&#xff0c;由 W3C 制定&#xff0c;具有以下特点&#xff1a;可扩展性&#xff1a;允许自定义标记&#xff08;如<Student>、<…

第八十四章:实战篇:图 → 视频:基于 AnimateDiff 的视频合成链路——让你的图片“活”起来,瞬间拥有“电影感”!

AI图生视频前言&#xff1a;从“刹那永恒”到“动态大片”——AnimateDiff&#xff0c;让图片“活”起来&#xff01;第一章&#xff1a;痛点直击——静态图像到视频&#xff0c;不是“幻灯片”那么简单&#xff01;第二章&#xff1a;探秘“时间魔法”&#xff1a;AnimateDiff…

2025深大计算机考研复试经验贴(已上岸)

如果你在初试出分前看到此贴 我建议&#xff1a; 准备机试和简历&#xff0c;即使你不估分&#xff1a;因为如果要准备春招的话&#xff0c;也总要刷题和做简历的。尽早估分&#xff0c;查一下往年的复试线&#xff0c;如果有望进复试&#xff0c;可尽早开始准备。 Preface …

用Pygame开发桌面小游戏:从入门到发布

一、引言 Pygame是一个基于Python的跨平台游戏开发库,它提供了简单易用的图形、声音和输入处理功能,非常适合新手入门游戏开发。本文将以"经典游戏合集"项目为例,带你一步步了解如何使用Pygame开发、打包和发布自己的桌面小游戏。 二、开发环境搭建 安装Python:…

CSS backdrop-filter:给元素背景添加模糊与色调的高级滤镜

在现代网页设计中&#xff0c;半透明元素搭配背景模糊效果已成为流行趋势 —— 从毛玻璃导航栏、模态框遮罩&#xff0c;到卡片悬停效果&#xff0c;这种设计能让界面更具层次感和高级感。实现这一效果的核心 CSS 属性&#xff0c;正是backdrop-filter。它能对元素背后的内容&a…