我在C++中使用Sqlite,并且有两个类似的问题:
( 1)我需要选择4个条目来进行插值。
例如,我的表可能如下所示:
角(双)倍色(双)
0 0.1
30 0.5
60 0.9
90 1.5
... ...
300 2.9
330 3.5如果要插值对应于95°的值,我将使用条目60°、90°、120°和150°。为了获得这些条目,我的请求将是SELECT color FORM mytable WHERE angle BETWEEN 60 and 150,没什么大不了的。
如果我想要335°,我需要300°,330°,360°(=0°)和390°(=30°)。然后我的查询将是SELECT color FORM mytable WHERE angle BETWEEN 300 and 330 OR angle BETWEEN 0 and 30。我不能使用SELECT color FORM mytable WHERE angle BETWEEN 300 and 390,因为这只会返回2种颜色。
我可以使用C API和用户定义的函数在我的查询中包含某种模块化的含义吗?如果我可以使用用户定义的函数来使用查询[...] BETWEEN 300 and 390并得到行300、330、0和30,那就太好了。
2)另一张桌子是这样的:
速度(双)双色(双)
0 0.1 0
10 0.5 1
20 0.9 2
30 1.5 3
... ... ...在现实中,由于对称性,颜色(速度)=颜色(-speed),而var(-speed) =myfunc(速度)。我希望进行诸如SELECT * FROM mytable WHERE speed BETWEEN -20 and 10之类的查询,并能够以负速度对“虚拟”行进行一些API操作,并将它们作为常规结果返回。
例如,我希望查询SELECT * FROM mytable WHERE speed BETWEEN -20 and 10的结果如下所示:
速度(双)双色(双)
-20 0.9 myfunc(2)
-10 0.5 myfunc(1)
0 0.1 0
10 0.5 1这有可能吗?
(谢谢你的帮助:)
发布于 2014-01-06 15:24:57
我建议使用一个有两个间隔的查询:
从mytable中选择*,其中( >= MIN(?1,?2)和<= MAX(?1,?2) OR ((MAX(?1,?2)> 360)和( >= 0和<= MAX(?1,?2)%360));
如果?1和?2为正,则此示例工作良好。
https://stackoverflow.com/questions/20951792
复制相似问题