gpt4 book ai didi

mysql - 批处理 : "!" OPERATOR in IF-ELSE MYSQL

转载 作者:行者123 更新时间:2023-11-29 12:24:47 24 4
gpt4 key购买 nike

我需要一些帮助。如何在 MySQL 查询中定义 !a!?因为我得到了一些错误结果。

  setlocal enableextensions 
setlocal enableDelayedExpansion

if !a! EQU !b! (%sql_PATH%\mysql -uroot -e "DROP DATABASE '!a!';")

输出为

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax : check the manual that corresponds to your MySQL server version for the right sytax to use near ''sample sample_1 sample_2 '' at line 1

我的完整代码

  @echo off
setlocal enableextensions
setlocal enableDelayedExpansion

set sql_PATH=C:\wamp\bin\mysql\mysql5.5.24\bin
set sql_DIR=C:\Users\neca\Desktop\db_test\databases\db_name
set "dbUser=root"
set "dbPass="

set LF=^
%empty line%
%empty line%

cd %sql_DIR%
FOR /D %%b IN (*) DO %sql_PATH%\mysql -u%dbUser% -e "CREATE DATABASE IF NOT EXISTS %%b;" && set "b=!b!%%b!LF!"

echo !b!

cd %sql_PATH%
for /f "usebackq delims=" %%a in (`
%sql_PATH%\mysql -u%dbUser% -e "SHOW DATABASES LIKE '%%sample%%';"
^| findstr /l /v /c:"Database" /c:"information_schema"
`) do (set "a=!a!%%a!LF!")

echo !a!


if !a! EQU !b! (%sql_PATH%\mysql -uroot -e "DROP DATABASE !a!;")

pause

最佳答案

您的问题不是批处理语法或延迟扩展不起作用。您的问题是变量的内容是换行分隔的数据库列表,但 DROP DATABASE 命令仅接受一个数据库名称。您需要遍历要删除的数据库列表,并为每个数据库发出 DROP 命令。

关于mysql - 批处理 : "!" OPERATOR in IF-ELSE MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28491626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com