2013-03-28 117 views
-1

我想設置一個NSString爲@"SELECT a, b FROM abc WHERE c LIKE %MYVALUE%"。 所以我初始化我NSStringinitWithFormat這樣的:如何設置包含%% @%的NSString和%@值?

NSString * query = [[NSString alloc] initWithFormat:@"SELECT a, b FROM abcd WHERE c LIKE %%@%%", searchBar.text]; 

不過,這並不當然的工作。

如何構建這種查詢?

+0

用%來逃避%[錯字問題都被本地化。(http://meta.stackexchange.com/questions/167342/close-all-the-typo-questions) – 2013-03-28 20:55:26

+2

您應該使用「準備好的語句」來避免SQL注入攻擊(請參閱http:// xkcd。 com/327 /!)。 –

+1

這不完全是一個錯字問題。這個問題是關於不知道如何在查詢中轉義特殊字符。不知道落在哪裏。 – Chuck

回答

2

%%在字符串中包含%

@"SELECT a, b FROM abcd WHERE c LIKE '%%%@%%'" 

您當前的字符串(%%@%%)將被解釋爲百分比符號,at符號,百分比符號(%@%

+0

'LIKE'值也需要用單引號。 – rmaddy

1

難道你需要標記的LIKE條件與'開始和結束?

所以initWithFormat:@"SELECT a, b FROM abcd WHERE c LIKE '%%%@%%'", searchBar.text];

+0

更好的是使用'... LIKE?',然後使用'sqlite3_bind_xxx'來綁定這個值。 – rmaddy

0

與您的當前%% @ %%,第一逃逸%的第二%,那麼你只是有一個@,然後你有另外%逃脫另一個%,致使%@%

你真正想要的是%% @%,但你需要讓你得到%%%@%%導致%searchBar.Text%

相關問題