分割字符串并返回mssql中最大的

2023-11-28

我需要找到一种方法来获取具有最高versionNumber的数据。

这是我的数据库设计:

VERSIONNUMBER - varchar(15)
DOWNLOADPATH - varchar(100)

假设我有这样的记录:

VERSIONNUMBER -------- DOWNLOADPATH
1.1.2                  a.com
1.1.3                  b.com
2.1.4                  c.com
2.1.5                  d.com
2.2.1                  e.com

我需要获取版本号为 2.2.1 的记录。不过需要一些关于 sql 的帮助:)

感谢您的任何帮助


尝试这个:

with a as
(
    select * from (values
    ('1.1.2'),('1.1.3'),('2.1.4 '), ('2.1.5'), ('2.2.1') ) as b(c)
)
select c, PARSENAME(c,1),PARSENAME(c,2), PARSENAME(c,3)
from a
order by 
convert(int,PARSENAME(c,3)),
convert(int,PARSENAME(c,2)),
convert(int,PARSENAME(c,1))

灵感来自:http://www.sql-server-helper.com/tips/sort-ip-address.aspx

with a as
(
    select * from (values
    ('1.1.2'),('1.1.3'),('2.1.4 '), ('2.1.5'), ('2.2.1') ) as b(c)
),
x as 
(
    select c, 
       convert(int,PARSENAME(c,3)) * 100 
       + convert(int,PARSENAME(c,2)) * 10 
       + convert(int,PARSENAME(c,1)) * 1 as the_value
    from a
)
select c from x where the_value = (select MAX(the_value) from x)

在软件开发中,经常会遇到有两位数字的小版本号,版本号与数字值没有任何关系,因此版本1.12大于1.5;为了弥补这一点,你必须pad数字充分:

    -- Use this, the query above is not future-proof :-)
with a as
(
    select * from (values
    ('2.1.4 '), ('2.1.12'), ('2.1.5'), ('2.2.1') ) as b(c)
),
x as 
(
    select c, 
       convert(int,PARSENAME(c,3)) * 100*100*100 
       + convert(int,PARSENAME(c,2)) * 100*100 
       + convert(int,PARSENAME(c,1)) * 100 as the_value
    from a
)
select c, the_value from x   
order by the_value

Output:

2.1.4   2010400
2.1.5   2010500
2.1.12  2011200
2.2.1   2020100

如果您不考虑这一点(如以下查询):

with a as
(
    select * from (values
    ('2.1.4 '), ('2.1.12'), ('2.1.5'), ('2.2.1') ) as b(c)
),
x as 
(
    select c, 
       convert(int,PARSENAME(c,3)) * 100
       + convert(int,PARSENAME(c,2)) * 10
       + convert(int,PARSENAME(c,1)) * 1 as the_value
    from a
)
select c, the_value from x   
order by the_value;


    -- KorsG's answer has a bug too
with a as
(
    select * from (values
    ('2.1.4 '), ('2.1.12'), ('2.1.5'), ('2.2.1') ) as b(c)
),
x as 
(
    select c, 
       CAST(REPLACE(c, '.', '') AS int) as the_value
    from a
)
select c, the_value from x   
order by the_value      

这两个查询将产生相同(不正确)的输出:

c           the_value
2.1.4   214
2.1.5   215
2.2.1   221
2.1.12  222

2.2.1 和 2.1.12 的值重叠。当您仅删除点并直接将结果字符串转换为 int 时,也会发生这种情况。 2.1.12变成2112,2.2.1变成221。 2.2.1大于2.1.12,不小于

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分割字符串并返回mssql中最大的 的相关文章

  • 从表中删除孤儿

    我正在尝试清理一张有很多孤立项目的桌子 我通过查找空值来检查是否与另一个表存在关系来解决此问题 DELETE FROM table1 LEFT JOIN table2 ON table1 ID table2 ID WHERE table2
  • 将两行中相似的列数据合并到一行中

    我的查询结果具有以下特征 LIDCode Total Domain Region VSE Version AB02 15 GLOBAL CANLA 0 6943 AB02 5925 CENTRE STREET SW 31 GLOBAL CA
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 将大量实体插入 SQL Server 2012 [重复]

    这个问题在这里已经有答案了 我正在进行一个使用 Entity Framework 5 和 SQL Server 2012 的项目 我们需要一次插入大量行 100k 个实体的顺序 基本上 我们有一个物理程序 它输出大量二进制数据 然后我们需要
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • 复选框上的数据绑定

    我目前正在将数据从 SQL 数据库之一提取到我的应用程序中 我可以让它适用于我的文本框和其他项目 但是 我似乎无法让它适用于复选框 这是我正在使用的代码 DataTable dt new DataTable dt using SqlConn
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 避免连接失败时出现空指针

    我有我的域类 带有命名查询 class Atendimento implements Serializable Funcionario funcionario static mapping funcionario column FUNCOD
  • 如何在存储过程中实现 sql 搜索功能 (Sql Server 2008)

    我需要编写一个存储过程 该过程将使用 sql server 2008 根据可选参数搜索表 将会有两种模式 基本搜索模式 我们只传递一些文本 高级搜索模式 使用可选参数而不使用 SearchText 为了进行测试 我使用 AdventureW
  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm

随机推荐

  • Django admin MySQL 慢 INNER JOIN

    我有一个带有 3 个外键字段的简单模型 class Car models Model wheel models ForeignKey Wheel related name wheels created models DateTimeFiel
  • Pig:使用外部模式文件加载数据文件

    我有一个数据文件和相应的架构文件存储在不同的位置 我想使用架构文件中的架构加载数据 我尝试使用 A LOAD
  • Google CDN 未对 jquery 进行 gzip 压缩

    如果我导航到这里 http ajax googleapis com ajax libs jquery 1 4 jquery min js 我使用 Firefox 3 6 3 下载了 70k 我可以确认它正在发送 Accept Encodin
  • 有什么方法可以用 python 将终端输出分配给变量吗?

    我需要通过 python 获取视频文件的持续时间作为更大脚本的一部分 我知道我可以使用 ffmpeg 来获取持续时间 但我需要能够将该输出保存为 python 中的变量 我认为这会起作用 但它给我的值为 0 cmd ffmpeg i s 2
  • jQuery 文本匹配

    我有一个带有文本的锚标记 我想检查给定的 var 是否与字符串完全匹配 这是可行的 但我想使用包含以外的东西 因为如果包含给定的字符串 它将匹配两个元素 我希望它完全匹配 有任何想法吗 function test submenu a con
  • 使用 JavaScript 设置自定义属性

    我正在使用 DynaTree https code google com p dynatree 但我遇到了一些问题 希望有人可以帮助 我在页面上显示树 如下所示 div ul li class folder Outputs ul li It
  • OpenGL - 如何绘制到多重采样帧缓冲区,然后将结果用作普通纹理?

    我正在开发一个小游戏开发库 该库的元素之一是 Canvas 屏幕外绘图区域 它是通过 OpenGL 帧缓冲区实现的 到目前为止 一切都很好 我生成一个纹理 将其附加到帧缓冲区 渲染它 然后使用帧缓冲区的纹理作为Texture2D 现在 我想
  • 在 Javascript 中将 Base64 数据转换并插入到 Canvas

    我得到一个代表 Base64 图像的数据缓冲区 我得到的数据 代表base64中的图像 部分数据 193 109 51 74 182 71 212 38 78 62 211 48 81 145 244 39 244 250 215 192
  • 如何允许本地主机外部访问

    如何允许 Angular2 本地主机之外的访问 我可以导航到localhost 3030 panel很容易 但当我写下我的IP时我无法导航 例如10 123 14 12 3030 panel 你能告诉我如何修复它吗 我没有使用npm 节点项
  • Objective-C 中无延迟播放音效

    我想在人们按下我的应用程序中的某些按钮时播放一些简单的声音效果 并且我尝试了几种方法 但我总是遇到延迟 使声音看起来不同步 我已按照教程进行操作here 所以我尝试了音频服务中的构建 但是有延迟 并且我尝试了 AVAudioPlayer 但
  • 如何注册Windows Phone 8?什么是 Windows Phone IP Over USB 传输 (IpOverUsbSvc)?

    我有一台 Windows Phone 8 正在尝试使用开发者帐户注册它 我使用的是Visual studio 2012附带的工具 Windows Phone开发者注册 但是当我尝试注册时 我收到一条消息 对于 Windows Phone8
  • Java - 正斜杠转义字符

    谁能告诉我如何在 Java 中使用正斜杠转义字符 我知道反斜杠是 但我尝试过 和 但没有成功 这是我的代码 public boolean checkDate String dateToCheck if dateToCheck matches
  • sizeof(int[1]) 是什么意思?

    我是 Linux 内核的新手 我正在阅读文件ioctl h 在那里我遇到了一个宏 IOC TYPECHECK t 看起来像这样 define IOC TYPECHECK t sizeof t sizeof t 1 sizeof t lt 1
  • 关于 C# 中常量小数字段的令人困惑的警告

    我正在尝试const修改器 同时探索大量的 C 教程 并放置了一堆const像这样的类中的修饰符而不在任何地方实际使用它们 class ConstTesting const decimal somedecimal 1 const int s
  • 无法初始化集群。请检查您的配置中的mapreduce.framework.name和相应的服务器地址-提交job2remoteClustr

    我最近将集群从 Apache Hadoop1 0 升级到 CDH4 4 0 我在另一台机器上有一个 weblogic 服务器 我通过 mapreduce 客户端将作业提交到这个远程集群 我仍然想使用 MR1 而不是 Yarn 我已经根据 C
  • 使用 advapi32.dll:LogonUserA() 模拟远程计算机的本地用户

    我需要能够在远程计算机上运行 RegLoadKey 并且可能我的计算机和远程计算机不在同一域中 如果是的话 下面的代码可以正常工作 我可以模拟在计算机上具有管理员权限的用户 否则 如果我们谈论本地用户 我发现我的计算机上必须有一个具有相同用
  • sliderInput 最大/最小文本标签

    我目前正在开发具有多个滑块输入的仪表板 是否可以用文本替换最大和最小标签 例如 我的 min 1 和 max 10 我想将比例保持在 1 到 10 之间 同时让滑块标签分别显示为 较早 和 较晚 Thanks 遗憾的是 简短的回答是否定的
  • 在 D3.js 中缩放或平移时限制域

    我实现了一个简单的 D3 js 折线图 可以缩放和平移 它基于 Stephen Bannasch 的优秀示例here 我的数据域是 x 维度中的 0 n 如何使用内置缩放行为 即使用鼠标滚轮事件 将缩放和平移限制到此域 我想防止用户在下端平
  • 在 Webview 中打开输入类型文件的相机未打开 Android

    我是安卓新手 我正在创建一个小应用程序来拍照并将其上传到服务器 我正在使用 Webview 和 html 表单来做到这一点 在浏览器 chrome 中相机正在打开 但在 webview 中 单击 选择文件 时不会打开相机 有人知道解决办法吗
  • 分割字符串并返回mssql中最大的

    我需要找到一种方法来获取具有最高versionNumber的数据 这是我的数据库设计 VERSIONNUMBER varchar 15 DOWNLOADPATH varchar 100 假设我有这样的记录 VERSIONNUMBER DOW