我想使用子查询的返回值名称创建数据库
CREATE DATABASE (SELECT (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1)
我的子查询返回值
SELECT(REPLACE(REPLACE(REPLACE(standard_name,'',``),'-','' ),'_',''))FROM standard_master WHERE _id = 1
standard01
创建数据库查询给我一个语法错误
您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以使用正确的语法 在'(SELECT(REPLACE(REPLACE(REPLACE(standard_name,'','')), '-',''),'_','''在第1行
答案 0 :(得分:1)
我假设您正在尝试通过从查询中获取数据库名称来创建数据库。您可以将变量用作:
示例:
SELECT @id := (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1;
# database name is in the @id variable
SET @SQL = CONCAT('CREATE DATABASE ', @id);
PREPARE stmt FROM @SQL;
# execute the statement that you have created
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
信用:我已将https://dba.stackexchange.com/questions/14397/creating-a-table-from-variable-names用作动态sql的参考。
希望它能回答您的查询。