我想使用子查询的返回值名称创建数据库
CREATE DATABASE (SELECT (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1)
我的子查询返回值
选择 (替换( 替换( 替换( standard_name, ' ', '' (, '-', '' (、"_"、"(( 从 standard_master 其中 _id = 1
标准01
创建数据库查询给我一个语法错误
您的 SQL 语法有误;请查看手册 对应于您的MariaDB服务器版本,以便使用正确的语法 在"(选择"("替换( 替换( standard_name, ", " (, 第 1 行的"-"、"、"_"、">
我假设您正在尝试通过从查询中获取数据库名称来创建数据库。您可以将变量用作:
- 声明一个变量并存储查询的输出
- 在动态 SQL 中使用变量创建数据库。
例:
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的参考。
希望它能回答您的查询。