gpt4 book ai didi

sql - 为什么我的字符串被接受为 sql db 中的 int 值?

转载 作者:行者123 更新时间:2023-12-03 19:23:29 25 4
gpt4 key购买 nike

我正在努力更好地学习 SQL,所以我从一开始就使用 sqlite3。当我尝试将字符串值插入指定为 int 的值时,它工作得很好。有人可以解释这是怎么可能的吗?

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE entertainment(num INT, show TEXT, myRating INT);
INSERT INTO "entertainment" VALUES(1,'Mr. Robot',10);
INSERT INTO "entertainment" VALUES(7,'Narcos','el classic');
INSERT INTO "entertainment" VALUES(8,'Suits',7);
INSERT INTO "entertainment" VALUES(9,'Friends',"classic");
COMMIT;

最佳答案

Sqlite3 在这方面非常灵活。简而言之,sqlite3 将根据需要转换数据或将其存储,而不管您指定的类型如何。但是,通过指定数据类型,sqlite3 将使用该信息尽可能高效地存储数据。

当您将列定义为 INTEGER 时,sqlite3 将 INTEGER 类型关联分配给该列。还有一个 NUMERIC 类型的亲和力。

A column with NUMERIC affinity may contain values using all five storage classes. When text data is inserted into a NUMERIC column, the storage class of the text is converted to INTEGER or REAL (in order of preference) if such conversion is lossless and reversible. For conversions between TEXT and REAL storage classes, SQLite considers the conversion to be lossless and reversible if the first 15 significant decimal digits of the number are preserved. If the lossless conversion of TEXT to INTEGER or REAL is not possible then the value is stored using the TEXT storage class. No attempt is made to convert NULL or BLOB values.



并且 INTEGER 亲和性定义如下:

A column that uses INTEGER affinity behaves the same as a column with NUMERIC affinity. The difference between INTEGER and NUMERIC affinity is only evident in a CAST expression.



在您的情况下, sqlite3 不会转换文本,而是使用 TEXT 存储类存储它。

Datatypes有关数据类型、存储类和类型亲和性的更多详细信息,请参阅 SQLite 引用页面。

关于sql - 为什么我的字符串被接受为 sql db 中的 int 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749844/

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