source

네이티브 SQL 준비 문을 사용하여 열 이름을 준비하는 방법

ittop 2023. 7. 31. 21:53
반응형

네이티브 SQL 준비 문을 사용하여 열 이름을 준비하는 방법

테스트를 위해 열에 준비된 네이티브 SQL 문이 필요합니다.

PREPARE stmt FROM 'SELECT * FROM `information_schema`.`TABLES` where  ? > 10000';
SET @a = AVG_ROW_LENGTH;
Execute stmt using @a;

이것은 #1054 - '필드 목록'의 'AVG_ROW_LENGTH' 열과 같이 작동하지 않습니다(같은 경우, 열 이름 주위에 '를 붙여도).

다음이 결과를 반환하기 때문에 오류가 정당하지 않은 것 같습니다.

PREPARE stmt FROM 'SELECT * FROM `information_schema`.`TABLES` where AVG_ROW_LENGTH > ?';
SET @a = 10000;
Execute stmt using @a;

특별한 구문이 있는지, 아니면 그냥 작동하지 않는지 알고 계십니까?
감사합니다!

버전 정보:

    Server: Localhost via UNIX socket
    Server type: MariaDB
    Server connection: SSL is not being used Documentation
    Server version: 10.1.47-MariaDB-0+deb9u1 - Debian 9.13
    Protocol version: 10
    User: root@localhost
    Server charset: UTF-8 Unicode (utf8mb4)

다음 방법을 사용할 수 있습니다.

SET @condition = 'AVG_ROW_LENGTH';
SET @value = 10000;

PREPARE stmt FROM CONCAT('SELECT * FROM `information_schema`.`TABLES` where ',  @condition , ' > ?');

Execute stmt using @value;

EXECUTE Immediate 문을 사용할 수도 있습니다.

EXECUTE IMMEDIATE CONCAT('SELECT * FROM `information_schema`.`TABLES` where ',  @condition , ' > ?') USING @value;

SQLize.online에서 테스트합니다.

언급URL : https://stackoverflow.com/questions/64801545/how-to-use-a-native-sql-prepared-statement-to-prepare-column-names

반응형