java—使用unicode或ascii字符代码创建sql查询

nr9pn0ug  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(304)

我想创建一个包含ascii或unicode字符代码的sql查询。例如,单引号(')的ascii字符代码是 39 unicode代码是 U+0027 . 在java中,我想通过将单个代码替换为它们的字符代码来编写一个查询:
ascii码:

connection.createStatement().executeQuery("select * from users where name =39test39")

unicode码:

connection.createStatement().executeQuery("select * from users where name =U+0027testU+0027")

所有这些查询都应该等价于 "select * from users where name ='test'" 当我运行上面的代码时,dbms(我尝试了mysql和sqlite)不能将ascii和unicode代码识别为单个引号。
总之,我知道参数化查询是最理想的。但是,在这里我想做的是,当dbms解析sql代码时,dbms应该识别unicode字符。例如,如果我使用\u0027,jvm会将其识别为单个引号,但我希望jvm不识别,dmbs识别字符编码。
有没有办法用字符代码代替字符本身?

wbrvyc0a

wbrvyc0a1#

不,你不想那样做。你应该这样做

PreparedStatement ps = conn.prepareStatement("select * from users where name = ?");
ps.setString(1, "test");
ResultSet rs = ps.executeQuery();

请记住,java中的所有字符串都是unicode字符串,因此您的建议是开始将字符串值作为字节流发送到jdbc驱动程序,这会很混乱并且容易出错(如果可能的话)。

pftdvrlh

pftdvrlh2#

查询应如下所示:

"select * from users where name =" + Character.toString((char)39) + "test" + Character.toString((char)39) + "\""
wqsoz72f

wqsoz72f3#

当您将ascii/unicode数字放在双引号内时,它们不会解析为字符,请尝试以下操作:

"select * from users where name =" + Character.toString(Character.toChar(yourIntHere)) + ...

然后就可以建立你要找的字符串了

相关问题