2013-03-28 120 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%

相关问题