2011-10-01 37 views
4

我搜索了sqlite.org,並且找不到這個。我習慣於MySQL,所以我想我可能忽略了一些東西。SQLite where子句在TEXT字段中表現得很奇怪

請看下面的代碼:

sqlite> select id,event_number,must_say from events where id=28; 
28|'28'|'AFK' 
sqlite> select id,event_number,must_say from events where must_say='AFK'; 
sqlite> select id,event_number,must_say from events where must_say like 'AFK'; 
sqlite> select id,event_number,must_say from events where must_say like 'A%'; 
sqlite> select id,event_number,must_say from events where must_say=='AFK'; 
sqlite> 

不用說,我真的很期待下面對於上述所有的查詢將返回,不只是第一個:

28|'28'|'AFK' 

我在所有TEXT字段上都會出現這種行爲。看來我根本找不到。

這裏是我的事件表的模式,用不相關的字段省略:

CREATE TABLE events (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    EVENT_NUMBER INTEGER, 
    MUST_SAY TEXT 
); 

任何想法?我只希望能夠通過表中的任意文本字段進行搜索。

編輯:我正在使用SQLite3。

+0

它應該工作。嘗試插入新行並執行查詢。也可以嘗試'喜歡'%K%'',也許你有不可打印的字符。 – DavidEG

+0

你說得對。我的數據庫人口中沒有足夠的性格剝離。我能否以某種方式推廣您的評論? – Brider

+0

我不這麼認爲,但你至少可以將評論標記爲「很棒的評論」。我不知道我是否應該將該評論複製爲答案... – DavidEG

回答

0

您的列中也可能有空格。

你可以看到空間與

select '|' || must_say || '|' from events 

你可以看到unprintables與

select hex(must_say) from events 
+0

謝謝,這有幫助!問題是我插入使用單引號的字符串,並沒有意識到引號插入到字段中。 – Brider

+0

多一點解釋本來不錯 –