使用 sql 查询搜索子字符串

Search a substring with sql query

在我的 SQLite 数据库中,我有一列包含一系列值,例如 #7 qsqjjsqdzdsqlqsqjjsqdzdsql 是可变的。列类型为 TEXT。 我想从所有行中提取数字,然后得到最大的一个。

首先,我认为最好的解决方案是使用 substring 函数来实现,但数字的长度可能会有所不同。也许regexp,但我找不到合适的模式(以#[1-9]space开头)

编辑:

比如我一列有4行

#7 qslqsendds
#78 mdsldpedd
#3 dmsdlef
#6 sdefzmdsdos

我只想得到最大的数字。比如这里是78。 我想要 78(不是 #78,不是 78 mdsldpedd)。

您可以使用instr找到space的位置,然后使用substr提取它前面的数字。然后你可以将它转换为 int,并查询它的 max:

SELECT MAX(CAST(SUBSTR(col1, 2, INSTR(col1, ' ') - 1) AS INT))
FROM table1

DBFiddle demo

您所要做的就是用 SUBSTR(col, 2).
去掉开头的 '#' SQLite 将通过添加 0:

'7 qslqsendds' 之类的字符串隐式转换为数字 7
SELECT MAX(SUBSTR(col, 2) + 0) AS max_col
FROM tablename 

参见demo