2013-09-27 85 views
0

我需要搜索,我存儲在SQLite數據庫這個角色have a good day" ! @ # $ %^& * () ',所以我用這個SQL尋找特殊字符的SQLite

Select ID From Tasks Where '--' || task || '--' || prio || '--' || due_date || 
'--' || [category] || '--' || note || '--' LIKE 
'%have a good day" ! @ [#] [$] \%^& * () ''%' ESCAPE '\' 

我已經使用了一些逃避技術,但是源碼找不到了,如何在搜索sqlite數據庫時正確地轉義這些特殊字符

+0

很抱歉,但你爲什麼要保存這樣的事情? –

+0

我爲用戶開發的應用程序需要它。他將這些東西存儲起來。你知道用戶可以在搜索 – Smith

+1

中輸入任何內容,它看起來像你試圖在你已經連接的一列中搜索這個值。我相信如果其中一列有NULL值,連接結果也將爲NULL。所以,'ISNULL'可能是你的答案 – cha

回答

2

您正在使用LIKE而不是GLOB。 唯一需要轉義的字符是%_

此外,該表將使得LIKE失敗的任何NULL值,所以你必須對任何可能NULL秒值進行轉換成別的東西:

Select ID 
From Tasks 
Where '--' || ifnull(task, '') || 
     '--' || ifnull(prio, '') || 
     '--' || ifnull(due_date, '') || 
     '--' || ifnull(category, '') || 
     '--' || ifnull(note, '') || '--' 
     LIKE '%have a good day" ! @ # $ \%^& * () ''%' ESCAPE '\' 
+0

我修改了我的查詢到'從任務ID選擇ID' - '||任務|| ' - '|| prio || ' - '|| due_date || ' - '|| [類別] || ' - '||注|| ' - 'LIKE'%祝你有美好的一天! @#$ \%^&*()''%'ESCAPE'\'沒有結果 ' – Smith

+1

您忘記了那個字符串中的'「。 –