SQLite选择忽略数字中间的点

时间:2014-02-13 06:34:46

标签: sqlite

是否可以构建输入为5102的select查询并在sqlite数据库中找到值5.102?

|Value1 | value2 | value3 | Text |
--------------------------------
|5.102  | 6.102  | 7.102 | Text1 |
|5.103  | 6.103  | 7.103 | Text2 |
|51.02  | 61.02  | 71.02 | Text3 |

用户搜索5102 返回

5.102 Text1
51.02 Text3

2 个答案:

答案 0 :(得分:3)

如果我理解你的问题,一个解决方案可能是使用replace语句预先选择值,然后对该表执行查询。

SELECT *
FROM (
    select *, replace(value1, '.', '') as changed_value1 from your_table
) AS P 
WHERE P.changed_value1 = '5102'

P是一个包含所有初始值的表格,加上changed_value1,这是一个没有点的value1

当你对某个字段执行替换时,sqlite会自动将它强制转换为字符串,即使该值代表一个int,因此也就是数字中的引号。

答案 1 :(得分:0)

| Value1 | value2 | value3 |文字| DecimalPlaceHolderPosition

  1. | 5102 | 6.102 | 7.102 | Text1 | 1
  2. | 5103 | 6.103 | 7.103 |文本2 | 1
  3. | 5102 | 61.02 | 71.02 |文本3 | 2
  4. 现在在应用程序中使用Value1&组合DecimalPlaceHolderPosition表示为十进制数。通过这个你的应用程序将保存从SQL复杂处理,如转换为字符串和删除点或使用正则表达式操作等。

    现在您需要简单的搜索查询

    “select * from tbl,其中Value1 = 5102 group by Value1”

    Arfan Mirza