English 中文(简体)
使用正则表达式进行SQL查询中的版本号(x.y.z)比较
原标题:Version number(x.y.z) comparison in SQL query by using regular expression
  • 时间:2021-12-22 01:55:39
  •  标签:
  • sql
  • regex

我有一个SQL数据库表,如下所示。

id version data
1 1.0.1 xxx
2 1.1.0 yyy
3 1.1.3 zzz
4 1.10.1 aaa
5 2.0.0 bbb

我想选择版本大于或等于1.1.0的数据。

在上述情况下,预期输出如下。

id version data
2 1.1.0 yyy
3 1.1.3 zzz
4 1.10.1 aaa
5 2.0.0 bbb

您能告诉我如何在SQL查询中提取它吗?

问题回答

如果您的“版本字符串”有漂亮的固定长度字段(例如“01.10.02” ) ,那么它很容易。

由于您的没有, MSSQL 2016及更高版本提供STRING_SPLIT

或者,这是一个很好的解决方案,您应该能够与大多数RDBM (包括Oracle、MSSLQ和mySql )一起使用:

https://stackoverflow.com/a/33560117/421195

SQL> WITH DATA AS
  2    ( SELECT  F/P/O  str FROM dual
  3    )
  4  SELECT SUBSTR(str, 1, Instr(str,  / , -1, 1) -1) part1,
  5         SUBSTR(str, Instr(str,  / , -1, 1) +1) part2
  6  FROM DATA
  7  /

PART1 PART2
----- -----
F/P   O

示例将字符串分成单独的列(例如,主/中/次数字)。

然后,您需要比较不同行中的相应列。

可以想象,您可以在一个SQL “选择”中完成所有操作。在实践中,一次编写一个存储过程可能会更容易。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签