我在ejabberd模块中有这行代码,它工作正常:
case catch ejabberd_odbc:sql_query(Server,["select COUNT(*) as total from spool where username='",IdUsername,"' AND xml LIKE '%message from%' AND xml LIKE '%chat%';"]) of
{selected, [<<"total">>], [[Totale]]} ->
Count = binary_to_list(Totale);
_ -> Count = "0"
end,
如果我转换它:
LIKE '%chat%';
用这个:
LIKE '%type=\'chat\'%';
我收到错误,有什么想法吗?还是有其他方式只能获得聊天消息?
答案 0 :(得分:1)
由于您在Erlang字符串中输入此内容,因此Erlang escape sequences适用。特别是,\'
是单引号'
的转义序列。 (这在原子内部更有用,它们用单引号分隔。)
您可以在Erlang shell中试用它,并看到"\'"
和"'"
是等效的:
1> "\'".
"'"
2> "\'" =:= "'".
true
要在字符串中包含实际的反斜杠,请使用另一个反斜杠转义它:
"\\'"
在你的情况下,那将是:
LIKE '%type=\\'chat\\'%';