ORDER BY 语句的操作数,网上说是因为预编译不支持提供字段,只能够提供字符串,但我直接在 MySQL 数据库中使用字符串作为 ORDER BY 的参数,并没有产生异常,而且按照预期正常的实现了相关功能。
演示
MySQL 5.7.26
对于 MySQL 8.x 版本的测试结果也是正常的。
PREPARE stmt FROM "SELECT user, host FROM mysql.user WHERE user LIKE ? ORDER BY ?";
SET @user = "%my%";
SET @host = "host";
EXECUTE stmt USING @user, @host;
DEALLOCATE PREPARE stmt;
SELECT user, host FROM mysql.user ORDER BY 'user';
MyBatis
Java 内置的 java.sql 也按照如下方式进行测试,也能够正常执行。
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mysql?useServer