由于某些奇怪的原因,查询强制LIKE vs =

时间:2014-05-27 14:08:47

标签: sqlite

我的查询过去常常与WHERE some_int_field = some_other_int_field中的=一起工作。当我这样做时,我得到0结果。但是,如果我做WHERE some_int_field LIKE some_other_int_field,我会得到我的结果。我已经检查了隐藏字符/空格的字段长度,并且字段的长度是正确的。它们都是整数字段。思考?下面有两个表结构:

CREATE TABLE "languages"(
"language_id" Integer,
"name" Text,
"english" Text,
"spanish" Text,
"portuguese" Text,
"french" Text );

-- Create index languagesIdx
CREATE INDEX "languagesIdx" ON "languages"( "name" );
BEGIN; 
-------------
CREATE TABLE "drop_downs"(
"mode_data" Integer,
"text_index" Integer,
"language_id" Integer );

-- Create index drop_downsIdx
CREATE INDEX "drop_downsIdx" ON "drop_downs"( "mode_data", "language_id" );
BEGIN;

1 个答案:

答案 0 :(得分:0)

SQLite使用dynamic typing并不关心字段的声明类型。

你的字段中有字符串。

要检查哪些行包含字符串,请使用以下内容:

SELECT * FROM drop_downs WHERE typeof(mode_data) = 'text'

要将列中的所有值转换为数字,请使用以下内容:

UPDATE drop_downs SET mode_data = CAST(mode_data AS integer)