python sqlite只比较字符串的前16个字符,而在搜索表时忽略其余字符

鱼雷

我在Python中有一个sqlite表:

CREATE TABLE lookup (  id string PRIMARY KEY  );

在此表中,我插入了很多行,然后创建了一个索引:

CREATE INDEX intindex ON lookup(id);

我现在要测试我的字符串是否在表中。我尝试了以下方法:

checkval = cursor.execute("""SELECT EXISTS (SELECT 1 
                              FROM lookup
                              WHERE id=?
                              LIMIT 1)""", (str(mystring), )).fetchone()[0]

但是问题是,这似乎仅检查字符串的前16个左右字符是否相同。例如,我知道我的表包含:

'95592037576585500895905906368332492139177507248814568869956683982249018785792'

但是,如果我检查不存在的值:

'95592037576585501898360696547541541617886282712262516411315613154848368326494'

然后我也得到了TRUE

检查:

'95592137576585500895905906368332492139177507248814568869956683982249018785792'

确实导致FALSE

为什么不比较完整字符串?

去世

在SQLite中没有数据类型STRING
如果将其用作列的数据类型,则如“确定列的亲和力”中所述,该列将具有NUMERIC亲和力。
因此,像这样的值:

'95592037576585500895905906368332492139177507248814568869956683982249018785792'

'95592037576585501898360696547541541617886282712262516411315613154848368326494'

将被视为浮点数,并且由于精度限制,其值将为:

9.5592037576586E+76

所以实际上他们是平等的。
参见演示

对于字符串TEXT,SQLite中只有数据类型,您应该将列的定义更改为该类型。

同样,您不应该LIMIT在代码中使用
EXISTS不会在查询中执行完全扫描,因为它会在找到符合条件的第一行后立即返回。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个Regex如何只匹配Python中字符串的前几个字符?

来自分类Dev

与另一个字符串比较时,如何从Python字符串中提取唯一子字符串?

来自分类Dev

我想将前两个字符替换为python中字符串的其余部分

来自分类Dev

Python:如何找到与字符串中前三个字符匹配的目录?

来自分类Dev

如何检查python,一个字符串只包含字母和连字符

来自分类Dev

比较2个字符串而不考虑Python中的重音

来自分类Dev

Python:比较2个字符串,看看它们是否包含相同的字母

来自分类Dev

比较python中的三个字符串

来自分类Dev

从字符串中剪切零个字符(字符串[:-0])-Python

来自分类Dev

python字符串拆分“大约8万个字符的字符串”

来自分类Dev

如何从python中的字符串中提取32个字符串?

来自分类Dev

如何从 Python 中的正则表达式中只提取一个字符串?

来自分类Dev

如何在Python 3中比较两个字符串中的单个字符

来自分类Dev

在Python中获取字符串的前n个字符的最佳方法

来自分类Dev

Python字符串拆分为多个字符

来自分类Dev

python连接字符串中的单个字符

来自分类Dev

python difflib打印只匹配两个字符串之间的部分

来自分类Dev

如何在一个字符串中搜索多个字符串,然后将其替换为其他字符串?(Python)

来自分类Dev

比较两个字符串时,Python max()函数无法提供正确的结果

来自分类Dev

比较一个字符串与python同一列中的所有其他字符串

来自分类Dev

Python:将字符串切成三个字符的子字符串

来自分类Dev

选择字符串的最后一个字符,直到Python中的空格

来自分类Dev

在python中打印出$和* + 2个字符之间的所有字符串

来自分类Dev

Python3-字符串的最后一个字符

来自分类Dev

从python中的字符串中提取最后一个字符?

来自分类Dev

MsgPack在python中打包的字符串值超过32个字符

来自分类Dev

如何删除字符串的第一个字符[python]

来自分类Dev

关于在python中用几个字符分割字符串的一个函数

来自分类Dev

Python:在字符串中放置一个字符

Related 相关文章

  1. 1

    一个Regex如何只匹配Python中字符串的前几个字符?

  2. 2

    与另一个字符串比较时,如何从Python字符串中提取唯一子字符串?

  3. 3

    我想将前两个字符替换为python中字符串的其余部分

  4. 4

    Python:如何找到与字符串中前三个字符匹配的目录?

  5. 5

    如何检查python,一个字符串只包含字母和连字符

  6. 6

    比较2个字符串而不考虑Python中的重音

  7. 7

    Python:比较2个字符串,看看它们是否包含相同的字母

  8. 8

    比较python中的三个字符串

  9. 9

    从字符串中剪切零个字符(字符串[:-0])-Python

  10. 10

    python字符串拆分“大约8万个字符的字符串”

  11. 11

    如何从python中的字符串中提取32个字符串?

  12. 12

    如何从 Python 中的正则表达式中只提取一个字符串?

  13. 13

    如何在Python 3中比较两个字符串中的单个字符

  14. 14

    在Python中获取字符串的前n个字符的最佳方法

  15. 15

    Python字符串拆分为多个字符

  16. 16

    python连接字符串中的单个字符

  17. 17

    python difflib打印只匹配两个字符串之间的部分

  18. 18

    如何在一个字符串中搜索多个字符串,然后将其替换为其他字符串?(Python)

  19. 19

    比较两个字符串时,Python max()函数无法提供正确的结果

  20. 20

    比较一个字符串与python同一列中的所有其他字符串

  21. 21

    Python:将字符串切成三个字符的子字符串

  22. 22

    选择字符串的最后一个字符,直到Python中的空格

  23. 23

    在python中打印出$和* + 2个字符之间的所有字符串

  24. 24

    Python3-字符串的最后一个字符

  25. 25

    从python中的字符串中提取最后一个字符?

  26. 26

    MsgPack在python中打包的字符串值超过32个字符

  27. 27

    如何删除字符串的第一个字符[python]

  28. 28

    关于在python中用几个字符分割字符串的一个函数

  29. 29

    Python:在字符串中放置一个字符

热门标签

归档