我试过这些代码:
a_name LIKE %%'%s'%% ORDER BY
a_name LIKE %%%s%% ORDER BY
a_name LIKE %%s% ORDER BY
a_name LIKE %'%s'% ORDER BY
a_name LIKE \%%'%s'\%% ORDER BY
a_name LIKE \%%%s\%% ORDER BY
输出:
query(adem)
结果:
a_name LIKE **0x1.37f7f4a7p-1039dem**' **0**RDER BY
RESULT2:
' at line 1 12637743454RDER BY
问题原因%
我该如何解决这个问题?感谢
答案 0 :(得分:1)
like
的模式是一个字符串。
您希望生成的查询如下所示:
select . . .
where a_name LIKE '**0x1.37f7f4a7p-1039dem**'
order by . . .
请注意模式周围的单引号。
以下是三个选项:
首先,传入你想要的字符串并连接通配符:
where a_name like concat('%', %s, '%')
其次,更改传入的字符串,使其具有通配符:
where a_name like '%s'
第三,将通配符与字符串标识符混合:
where a_name like '%%s%'
我实际上会提出第四个,即使用查询参数而不是查询字符串:
where a_name like concat('%', ?, '%')