gpt4 book ai didi

Sqlite:LIKE 匹配值,但相等不匹配

转载 作者:行者123 更新时间:2023-12-03 17:49:36 24 4
gpt4 key购买 nike

我有非常简单的 SQLite 表:

CREATE TABLE IF NOT EXISTS `settings` (`Name` TEXT PRIMARY KEY, `Value` TEXT);

我使用以下 2 个查询:
SELECT `Value` FROM `settings` WHERE `Name` LIKE 'MainTabControl.active';

(返回 1 行)


SELECT `Value` FROM `settings` WHERE `Name` = 'MainTabControl.active';

(返回 0 行)

Name 的行列值 MainTabControl.active肯定存在(我在做 SELECT * 时看到它),开头和结尾没有任何空格,并且所有字符的大小写相同。
相等运算符和 LIKE 行为不同的原因是什么? ?

最佳答案

您可能会遇到 sqlite 的类型系统。详细信息在 http://www.sqlite.org/datatype3.html ,但相关的一点是:

A TEXT value is less than a BLOB value

我的猜测是您(有意或无意)将名称列存储为 BLOB 而不是 TEXT。这不会是 =到文本值,但将是 LIKE它。
$ sqlite3
SQLite version 3.7.15 2012-10-15 18:02:57
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table settings (name, value) ;
sqlite> insert into settings values ('MainTabControl.active','textname') ;
sqlite> insert into settings values (cast ('MainTabControl.active' as blob),'blobname') ;
sqlite> select value from settings where name = 'MainTabControl.active' ;
textname
sqlite> select value from settings where name like 'MainTabControl.active' ;
textname
blobname
sqlite> select value, typeof(name) from settings where name like 'MainTabControl.active' ;
textname|text
blobname|blob
sqlite>

关于Sqlite:LIKE 匹配值,但相等不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820085/

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