gpt4 book ai didi

SQLite '+' 前缀在整数的情况下被删除(列类型 STRING)

转载 作者:行者123 更新时间:2023-12-03 17:04:51 26 4
gpt4 key购买 nike

我有这个奇怪的问题。我已将 SQLite 数据库中的一列定义为 STRING但是当我将它与前缀为 + 的整数一起使用时它会自动将它们转换为适当的整数:

sqlite> create table test (key STRING);
sqlite> insert into test values ('+1');
sqlite> insert into test values ("+2");
sqlite> select * from test;
1
2

如您所见 +标志被移除。另一方面,如果我 报价 琴弦 两次 :
sqlite> delete from test;
sqlite> insert into test values ('"+3"');
sqlite> insert into test values ("'+4'");
"+3"
'+4'

...它按预期工作,但它们被引用。我的主要问题是我需要“双引号”所有字符串,因为 我不能保证某些字符串对于数据库来说可能看起来像一个整数,因此会被篡改 .

这是我想知道的:
  • 为什么 SQLite 表现得像这样(也许还有其他实现)?
  • 我可以做些什么吗? (没有双引号?)


  • 仅供引用,插入字符串 '+test'按预期工作:
    sqlite> delete from test;
    sqlite> insert into test values ('+t');
    sqlite> select * from test;
    +t

    (不带引号的回答 - 哇!)

    最佳答案

    这与 SQLite 的 dynamic data typing 有关.特别是STRING不是有效类型,因此 SQLite 默认为 NUMERIC亲和力。事实上,引用该页面的内容:

    Note that a declared type of "FLOATING POINT" would give INTEGER affinity, not REAL affinity, due to the "INT" at the end of "POINT". And the declared type of "STRING" has an affinity of NUMERIC, not TEXT.



    您想将列声明为 TEXT ,不是 STRING .那将修复它。

    关于SQLite '+' 前缀在整数的情况下被删除(列类型 STRING),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219517/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com