1

我的 sqlite 数据库中有以下问题,存储了一些值,出于某些目的,我需要删除条目。但在我需要获取我想要删除的行的 id 之前。要获取 id,请尝试使用以下查询:

select commonid from TestData where coordinate_x=5.707523 and coordinate_y=6.693941;

结果为零,因为坐标 y 的值为 6.693940。因此,我想使用 like 来获得正确的结果。没关系,因为值仅在逗号后的前两位数字中没有区别。我试过了:

select commonid from TestData where coordinate_x=5.707523 and coordinate_y LIKE "6.69394%";

这也失败了,结果为零。

我在互联网上发现我可以使用 * 而不是 %。

select commonid from TestData where coordinate_x=5.707523 and coordinate_y LIKE "6.69394*";

不幸的是,这也不起作用。

那么如何使用 like 或任何其他命令来解决这个问题呢?

4

3 回答 3

3

这对我有用:

sqlite> .schema t
CREATE TABLE t (f double);
sqlite> select * from t;
1.23456789
2.23456789
3.23456789
sqlite> select * from t where f = 1.23456789;
1.23456789
sqlite> select * from t where f like '1.23456789';
1.23456789
sqlite> select * from t where f like '1.234%';
1.23456789
sqlite> select * from t where f like '_.23456789';
1.23456789
2.23456789
3.23456789
于 2013-11-14T10:58:52.307 回答
1

你可以,但这样做会更聪明(而且可能更快)

SELECT commonid FROM TestData WHERE coordinate_x=5.707523 AND
    ABS(coordinate_y-6.693945)<0.000005;

或者

SELECT commonid FROM TestData WHERE coordinate_x=5.707523 AND
    coordinate_y BETWEEN 6.69394 AND 6.69395;
于 2013-11-14T11:12:09.360 回答
0

尝试将其视为角色

select commonid from TestData 
where coordinate_x=5.707523 
and Cast(coordinate_y as Char(100)) LIKE "6.69394%";
于 2013-11-14T11:03:58.287 回答