Oracle SQL 对版本号进行排序

2023-12-11

在 Oracle 中,只需使用ORDER BY不对版本号进行排序。 我的Version_Number字段被声明为VARCHAR我无法改变它。 例如:以下版本:

1.20  
1.9   
1.18  
1.13  
1.5   
1.11  
2.0  
1.8   
1.3   
1.2   
1.1   
1.0   
1.10  

应排序为

2.0   
1.20  
1.18  
1.13 
1.11 
1.10  
1.9   
1.8   
1.5  
1.3   
1.2   
1.1 
1.0   

我研究了几篇文章,但它们似乎都没有真正达到我的目的,或者答案是针对 SQL Server 等而不是 Oracle 的。我遇到了这个特定的 sql,它看起来似乎有效。

select version_number from mytable 
order by lpad(version_number, 4) desc;

以这种方式对版本进行排序:

1.20    
1.18   
1.13   
1.11   
1.10   
2.0    
1.9    
1.8   
1.5     
1.3    
1.2    
1.1    
1.0    

我相信这个sql语句适用于SQL Server :

select version_number from mytable 
order by cast ('/' + replace(version_number , '.', '/') + '/' as hierarchyid) desc;

但是,这不适用于 Oracle。 Oracle中有hierarchyid的替代品吗?


有谁能想出一个 SQL 来准确地对这些版本进行排序吗?

我已经看过下面提到的帖子(附有链接)。所以请不要告诉我这篇文章是重复的。
SQL 按版本“编号”排序,不同长度的字符串
如何使用 SQL Server 查询对“版本号”列进行排序
Sql Server 中的版本号排序
mysql 版本号排序
还有很多。


这是一种方法。先按前面的号码下单.然后按后面的数字.

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

Oracle SQL 对版本号进行排序 的相关文章

  • 如何从 SQL Server 2008 返回由共享公共父级的多个选择构成的 XML

    我尝试过使用 FOR XML PATH FOR XML EXPLICIT 和 FOR XML AUTO 但数据从未采用正确的层次结构构建 基本上 我有一张父表 客户 和 3 个子表 每个表都有一个 customerid 列 Customer
  • Django 视图中的原始 SQL 查询

    我将如何使用原始 SQL 执行以下操作views py from app models import Picture def results request all Picture objects all yes Picture objec
  • 单笔交易与多笔交易[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • FROM 子句中子查询末尾随机字母的含义 - SQL

    我终于成功将两个sql sum查询的结果求和了 这家伙迈出了一小步 我的问题与代码中的最后一个字符 Z 有关 SELECT SUM hr FROM SELECT SUM amount AS hr FROM Try again dbo tue
  • ORA-12154: TNS: 无法解析指定的连接标识符

    当我安装服务器版本和现有的 Oracle 10g 客户端版本时 问题就开始了 背景 安装了 Oracle 客户端版本 10g 位于 c oracle 以连接到位于其他国家 地区的数据库 所以我们只能连接到它并且对它的访问权限有限 路径 gt
  • 将整数值从数据库列转换为Oracle中的文本

    我对数据库有一个要求 1 表ABC 列 check amount number number 18 4 这基本上包含例如支票金额 3000 50 支付给雇员 现在签发了一张支票 该支票包含数字和文本形式的 check amount 例如 支
  • 浏览多个字段的值并将它们插入到同一列中

    我正在尝试使用重复行为我的 oracle apex 应用程序创建一个功能 假设我有一个车辆表 CREATE TABLE vehicles brand VARCHAR2 50 model VARCHAR2 50 comment VARCHAR
  • 如何获取数字列的确切类型,包括。规模和精度?

    有没有办法知道列中列的确切类型DataTable 现在我正在这样做 DataTable st dataReader GetSchemaTable foreach DataColumn col in st Columns var type c
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • Oracle中表的列重新排序

    我有一个包含 50 多列的表 我需要交换前两列的顺序 使用 Oracle 实现此目的的最佳方法是什么 假设表名是 ORDERDETAILS 前两列是 ITEM ID 和 ORDER ID 重命名完成后 表名仍应为 ORDERDETAILS
  • 使用临时表替换 WHERE IN 子句

    我让用户输入我需要在表中查询的值列表 该列表可能非常大 并且长度在编译时未知 而不是使用WHERE IN 我认为使用临时表并对其执行联接会更有效 我在另一个SO问题中读到了这个建议 目前找不到它 但会在找到时进行编辑 要点是这样的 CREA
  • Python Pandas 按列对多索引进行排序,但保留树结构

    使用 pandas 0 20 3 我尝试按列 D 对数据帧的 n 个多级进行排序 其中的值 降序 以便维护组的层次结构 输入示例 D A B C Gran1 Par1 Child1 3 Child2 7 Child3 2 Par2 Chil
  • Oracle 事务在 C++ 和 Java 之间的传播

    我们有一个现有的 C 应用程序 我们将逐步将其替换为新的基于 Java 的系统 在我们用 Java 完全重新实现所有内容之前 我们期望 C 和 Java 必须相互通信 RMI SOAP 消息传递等 我们尚未决定 现在我的经理认为我们需要 J
  • 根据三列中的值组织行

    导入并获取数据集import numpy as np import matplotlib pyplot as plt import pandas as pd df pd DataFrame DaysExperienceTask 7 8 2
  • SQL Server 2008 R2 DMV - sys.dm_sql_referencing_entities - 查询用法

    我正在尝试使用以下命令获取表列表的所有依赖项sys dm sql referencing entities DMV 这个查询给了我所有表的列表 SELECT TableName from FinalTableList 此查询给出 Table
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • 分组依据检索 3 个值

    我有以下查询 SELECT Cod MIN Id AS id Min MAX Id AS id Max retrieve value in the middle COUNT AS Tot FROM Table a NOLOCK GROUP
  • 如何防止用户生成的 Sql 查询上的 Sql 注入

    我有一个项目 私有的 ASP net 网站 受 https 密码保护 其中要求之一是用户能够输入直接查询数据库的 Sql 查询 我需要能够允许这些查询 同时防止它们对数据库本身造成损坏 以及访问或更新它们不应该访问 更新的数据 我制定了以下
  • 如何对数字进行排序? [复制]

    这个问题在这里已经有答案了 下面是代码 Is the sortNumber对数字进行排序的函数 a 和 b 是什么意思以及为什么存在 为什么sortNumber in n sort sortNumber 没有指定任何参数a and b Ja

随机推荐

  • Javascript自动更新页面?

    任何人都可以给我一个方向 我想知道如何像 Facebook 那样自动更新页面以获取新的状态更新 新的喜欢等 即 如果您在窗口中打开一个状态并且用户单击 喜欢 则 1 喜欢会自动出现 提前致谢 这些是使用 PUSH 模型 订阅 发布 完成的
  • 在 Eclipse 中运行 Java 程序,就像从命令行一样

    因此 我发现了一些与我类似的问题 但没有一个具体解决了我遇到的问题 我的程序将由命令行参数调用 例如 java Main inputFile txt inputFile2 txt 我正在 Eclipse 中编程并使用public void
  • UI 属性不包含某些键

    我有以下问题 我需要获取 UI 属性 UIManager getString OptionPane okButtonText 返回字符串 OK 并且它有效 但是 如果我迭代UIDefaults钥匙组 我从来没有拿到钥匙 OptionPane
  • 远程最小化机器 VBS 中的发送密钥

    我在 SAP 应用程序的对象中执行 Shift Enter 时遇到问题 这是我的代码 If Dialog SAP Logon 730 WinListView SysListView32 Exist 100 Then Dialog SAP L
  • 为什么我下载文件时有两个请求? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我有一个提供文件的操作 public override FileContentResult Foo var someDataAsBytes return File someD
  • 使用 SDK 获取 Azure VM 的 IP

    我有一个已启动并在天蓝色中运行的虚拟机 我知道它的名称 但希望使用新的 C SDK 以编程方式检索其 IP 地址并避免使用 REST API 我怎样才能做到这一点 尝试这个 string subId deadbeef beef beef b
  • 在python中求一棵树的最大和

    我有一棵数字树 我希望能够找到数字之和 每个数字下面是左右两个孩子 在所有可能的路径中 我希望能够通过所有可能的路径找到最大的数字 这是一个例子 8 3 11 10 2 32 6 返回 8 11 32 51 我觉得这是一个递归问题 但我坚持
  • 快速卷积算法

    我需要对两个一维信号进行卷积 一个平均有 500 个点 这个是汉宁窗函数 另一个有 125000 个点 每次运行 我需要应用三倍的卷积运算 我已经有一个基于 scipy 文档运行的实现 如果您愿意 您可以在此处查看代码 前面是 Delphi
  • Pentaho数据集成Kettle转换中如何配置生产环境的数据库连接

    我设计了一个ktr文件进行转换 我需要配置生产环境的数据库连接详细信息 我怎样才能做到这一点 有什么建议么 我使用环境变量 KETTLE HOME KETTLE JNDI ROOT PATH PATH KETTLE HOME Kettle
  • Boost Signals2 自动连接管理和更改信号的互斥类型

    我正在尝试使用自动连接管理 and 更改信号的互斥类型对于模板函数 以下代码使用 gcc 4 3 4 可以正常编译和执行 http ideone com LLN6d include
  • Renci SSH.NET - 没有为 opmnctl 返回结果字符串

    我试图通过 VB NET 从命令获取结果 它返回空字符串 如下面的代码所示 Dim connInfo As New Renci SshNet PasswordConnectionInfo serverip user pass Dim ssh
  • IonRangeSlider 将标签分配给值

    我在用离子范围滑块我想为值分配标签 反之亦然 因此 用户可以通过以下选项选择距海滩的距离 on beach 100m 200m 300m more than 300m 但我需要post价值观像 0 100 200 300 999 My in
  • 通过一次导入 csv 将多个用户添加到多个组(后续查询)

    我一直在寻找一种使用多个用户名填充多个通讯组的方法 我碰到本网站上的脚本由成员 Frode F 编写 Import Csv C Scripts Import Bulk Users into bulk groups bulkgroups3 c
  • 如果没有明确设置一个巨大的常量值,是否可以期望被告知不要超时?

    我已将超时设置为一个愚蠢的高数字 有没有更好的方法告诉脚本不要超时 usr bin expect spawn telnet 10 10 10 10 set timeout 200000000 expect login send user r
  • iOS 15 中 UIButton 图像行为发生变化?

    我的代码很简单 我有一个 UIButton 的出口 button 我在代码中设置它的图像 let jack UIImage named jack png self button setImage jack for normal 问题是这并不
  • Cython C++ 包装器运算符() 重载错误

    与我之前的问题有关 使用 Cython 包装使用 OpenCV 类型作为参数的 C 类 现在我陷入了另一个错误 我的 OpenCV 类型 Matx33d 的 cython 包装代码如下所示 cdef extern from opencv2
  • Eclipse:运行时我们如何获取 main 参数

    在 Java 中 对于普通的 main 方法 public static void main String args code here String args用于从命令行获取一些参数 我可以通过以下方式从命令提示符运行此文件 javac
  • 为什么修改迭代变量不影响后续迭代?

    这是我遇到问题的 Python 代码 for i in range 0 10 if i 5 i 3 print i 我预计输出是 0 1 2 3 4 8 9 然而 翻译却吐槽道 0 1 2 3 4 8 6 7 8 9 我知道一个for循环在
  • 在 matlab 等高线图中选择特定水平

    我有这个plot我生成它是为了测试等值线图在 matlab 上的工作原理 我想弄清楚是否有一种方法可以只绘制其中一条线 但不一定是第一条线 Matlab 的解释是 如果你这样做 contour X Y Z 1 它会绘制其中一条线 但它始终是
  • Oracle SQL 对版本号进行排序

    在 Oracle 中 只需使用ORDER BY不对版本号进行排序 我的Version Number字段被声明为VARCHAR我无法改变它 例如 以下版本 1 20 1 9 1 18 1 13 1 5 1 11 2 0 1 8 1 3 1 2