Sqlite VARCHAR上的内部联接编号范围查找
所以我想知道SQLite是否能够理解数字范围 我希望能够有一个范围,如“25-30”,并查找“27”,看看它是否在该范围内。 问题是,该范围将包含一些文本,例如“Alice 25-30” 本链接的表3中给出了Id希望实现的一个示例: 对于能够在第一个数字处打破字符串,但仍然保持数字不变的解决方案,我们非常高兴Sqlite VARCHAR上的内部联接编号范围查找,sqlite,Sqlite,所以我想知道SQLite是否能够理解数字范围 我希望能够有一个范围,如“25-30”,并查找“27”,看看它是否在该范围内。 问题是,该范围将包含一些文本,例如“Alice 25-30” 本链接的表3中给出了Id希望实现的一个示例: 对于能够在第一个数字处打破字符串,但仍然保持数字不变的解决方案,我们非常高兴 Alice|25-30 不是 Alice | 5-30(我以前见过这个建议:D) 要真正创建表3,我将使用内部联接或左外部联接,不仅重新创建表,而且速度更快 提前感谢。您可以通过如下方式
Alice|25-30
不是
Alice | 5-30
(我以前见过这个建议:D)
要真正创建表3,我将使用内部联接或左外部联接,不仅重新创建表,而且速度更快
提前感谢。您可以通过如下方式连接两个表:
INSERT INTO Table3 (`ID`, `Age`,'Age Range')
SELECT t1.ID, t1.Age, t2.`Age Range`
FROM Table1 t1 INNER JOIN Table2 t2
ON t1.Age + 0 BETWEEN `Age Range` + 0
AND SUBSTR(`Age Range`, INSTR(`Age Range`, '-') + 1) + 0
SQLite在使用诸如+0
之类的数字运算的表达式中使用字符串时,会执行字符串到数字的隐式转换,因此查询所做的是将Age
与Age Range
的第一和第二部分进行数字比较。请注意,t1上的
中不需要+0
。如果将Age
定义为REAL
,这更有意义。
如果希望将表1
中的行插入表3
中,即使没有匹配的年龄范围,也将内部
连接更改为左侧
连接
请参阅。
结果:
身份证件
年龄
年龄范围
1.
30
25-30
2.
40.5
31-45