2013-07-26 83 views
11

我試圖運行查詢:爲什麼SQLite會說instr不存在?

 
SELECT name 
FROM Foo 
WHERE instr(name, '@') = 0 AND instr(name, '.') != 0 

但我得到錯誤:「沒有這樣的函數:instr」。這使我困惑,因爲the website clearly states該函數存在。任何人都知道發生了什麼事?

P.S.我也嘗試了SQLiteSpy中的查詢,它給出了相同的錯誤。

+2

這是[加入3.7.15(http://www.sqlite.org/changes.html)( 12月發佈) - 你運行的是哪個版本? –

+0

@MikeChristensen啊哈!我正在使用3.7.14.1。謝謝! – chacham15

+0

噢這麼近! :) –

回答

17

按照Change History,在3.7.15版本添加了instr功能:

2012-12-12 (3.7.15)

Added the instr() SQL function.

確保您運行的是最新版本。

如果升級是不是一種選擇,你還可以使用LIKE操作:

SELECT name 
FROM Foo 
WHERE name NOT LIKE '%@%' -- name does NOT contain @ 
AND name LIKE '%.%';  -- name DOES contain . 
+3

instr(x,y)返回y的字符串的x中的位置。 LIKE返回true或false。對於所有用途甚至都不相同。 – fyngyrz

+1

我並不是故意暗示它們是相同的,只是說它是針對原始文章中描述的用例的解決方法。 –

相關問題