【SQL Server】使用SQL比较版本号
最近遇到这么一个场景,需要用SQL从表里取出版本号小于'10.2'的所有数据。目前表中以存在的数据中,版本号有两种格式,一个是'X.Y',另一个是'X'。对于SQL Server来说,其没有string split函数,所以处理起来会麻烦一点。
首先,我想到是用parsename函数,分别用'X.Y'和'X'两种格式做测试,可以发现'X'格式解析的不对,'5'应该是major version。

要解决也不难,可以先把版本号逆置,这样解析出来的就是major不为空,而minor为空:

但这样也有一个问题,就是'13'变成'31'了。好吧,那就对结果再逆置一下:

下一步就是把NULL给一个默认值。同时由于major和minor的长度不会大于7,所以我的方法是把major和minor分别前面补0到7位,这里可以用right函数,然后拼接major和minor,例如'13.2'处理成'00000130000002',而'5'则处理成 '00000050000000',对比版本号'10.2'处理成'00000100000002',这样的话,版本号就能直接对比了。
SQL 如下:
select * from Table where CONCAT(right('' + REVERSE(parsename(REVERSE (Table."OS_VERSION"),1)),7),
case when REVERSE(parsename(REVERSE (Table."OS_VERSION"),2)) is null then '' else
right('' + REVERSE(parsename(REVERSE (Table."OS_VERSION"),2)),7) end) < '';
【SQL Server】使用SQL比较版本号的更多相关文章
- PowerDesigner反向数据库时遇到[Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句。SQLSTATE = 37错误解决方法
逆向工程中,有时会出现如下错误 ... [Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句 SQLSTATE = 37000 解决方案: 1. ...
- [Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效(转)
原帖由 qingyun 于 2010-6-21 15:44 发表 在写pl/sql的时候,有个很重要的注意点:比如:begin update 某个sqlserver的表@dblink名字 .... ...
- (转)[SQL Server] 动态sql给变量赋值(或返回值给变量)
本文转载自:http://blog.csdn.net/xiaoxu0123/article/details/5684680 [SQL Server] 动态sql给变量赋值(或返回值给变量) decla ...
- SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...
- SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)
原文:SQL Server审计功能入门:SQL Server审核 (SQL Server Audit) 介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你"谁什么时候 ...
- sql server 与 sql server compact 互相数据导入
从SQL Server 导出数据到 Sql Compact 使用 Sql Server Compact Tool box 从SQL Server Comapct 导出数据到 Sql Server 使 ...
- SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005
New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differen ...
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载
223本电子书籍,囊括了.NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Shell/A ...
- SQL Server参数化SQL语句中的like和in查询的语法(C#)
sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...
- SQL Server 2012 - SQL查询
执行计划显示SQL执行的开销 工具→ SQL Server Profiler : SQL Server 分析器,监视系统调用的SQL Server查询 Top查询 -- Top Percent 选择百 ...
随机推荐
- PAT B1022 D进制的A+B
课本AC代码 #include <cstdio> int main() { int a, b, d; scanf("%d%d%d", &a, &b, & ...
- 01背包方案数(变种题)Stone game--The Preliminary Contest for ICPC Asia Shanghai 2019
题意:https://nanti.jisuanke.com/t/41420 给你n个石子的重量,要求满足(Sum<=2*sum<=Sum+min)的方案数,min是你手里的最小值. 思路: ...
- one:arguments对象伪数组
这是我的第一个博客 <script> //计算N个数字的和 //定义一个函数,如果不确定用户是否传入了参数,或者说不知道用户传入了几个参数,没办法计算, // 但是如果在函数中知道了参数的 ...
- Python 3.8.0 正式版发布,新特性初体验 全面介绍
Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...
- 怎样理解String的slice(), subString(), substr()三个方法
String.prototype.slice() 是js字符串的切片工具方法, 用于对字符串做'裁剪'操作, 不改变原字符串. 'helloworld'.slice(0,5); // 'hello'; ...
- CentOS6.8安装Python3.6.3
1.linux下安装python3 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum install zlib-devel bzip2-devel ...
- Html-自适应
自适应 使网页能适应不同终端设备的技术.原理是通过检测视口分辨率来判断是什么终端的,PC,手机还是平板. 做自适应的网页时,需要在代码中加入“祖传代码”,即通用代码. 这是在头部head引入的: &l ...
- <%%> <%! %> <%=%> <%-- --%> jsp中jstl一些运用
<%%> 这里面可以添加java代码片段<%! %> 这里添加java方法 主要是用来声明变量的 <%=%> 将变量或表达式值输出到页面<%-- --%> ...
- c#传入类名添加类对应的表数据
添加方法: public int Insert<T>(T model) where T : class, new() { int sucess = 0; if (model is Temp ...
- Java学习笔记【六、正则表达式】
参考:http://www.runoob.com/java/java-regular-expressions.html 概述 java.util.regex包,主要包含三个类: Pattern:正则表 ...