2014-09-28 94 views
1

我有這樣的SQL查詢:如何在SQLite中使用SUBSTRING_INDEX?

SELECT DISTINCT SUBSTRING_INDEX(value,'_',1) FROM category; 

這與我的MySQL數據庫沒有問題的作品。

我試圖用它與我的SQLite數據庫,但它給了我關於SUBSTRING_INDEX命令的錯誤。所以,我用這個查詢:

SELECT DISTINCT substr(value,'_',1) FROM category; 

這將返回一個空的結果集。然後,我試過這個查詢:

SELECT DISTINCT value FROM category 

這很好用。可能是什麼問題呢?

+0

您是否閱讀過該鏈接?我從那裏複製SQLite查詢!但正如我之前所說,它返回空白輸出... – smartmouse 2014-09-28 14:00:26

+1

這不是[substr()](http://www.sqlite.org/lang_corefunc.html#substr)如何工作;你還必須使用[instr()](http://www.sqlite.org/lang_corefunc.html#instr)。 – 2014-09-28 15:41:34

回答

-1

您不應該以您使用SUBSTR的方式使用SUBSTR。嘗試寫這樣的:

SELECT DISTINCT SUBSTR(value,'_', 2) FROM category; 

使用SUBSTR最好的辦法是將其設置以正確的方式:

SELECT DISTINCT SUBSTR(value,'3', 1) FROM category; // Where 3 represents index from which you want to substring data 
0

當然,這是非常晚,但是對於其他人可能會看到這個問題,讓我把這個放在這裏。

sqlite substr函數不能這樣工作。

它需要3個參數。第一個是你正在搜索的字符串,而第二個和第三個都是整數。

第二個參數表示要獲取的子字符串的起始索引,第三個參數表示您的子字符串將具有的字符數。如果您省略第三個參數,那麼子字符串將以第二個參數開始並繼續到提供的字符串的末尾。

最後需要指出的索引是從1開始的,即在字符串中最左邊的字符在索引1,而不是0

更特殊情況下,如當參數爲負可能在

找到

http://www.sqlite.org/lang_corefunc.html