解决mysql linux bash与coloumn名称有“ – ”&从文件查询mysql

我在linux bash上查询mysql有问题,我的查询有2个coloumn“ – ”:

MysqL -u root -pPass mydb -e "select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'";

但结果是:

bash: work-time: command not found

我知道这个引用“`”的问题,但是如何解决这个问题呢?

我更新了我的查询

在线解决查询

MysqL -u root -pPass mydb -e "select \`work-time\` from work where \`work-time\`> '2013-0-3-07 00:00:00'"

其他问题

如果我将我的查询保存在文件中,并像这样查询

 MysqL -u root -pPass mydb < query.sql

得到错误

ERROR at line 1: UnkNown command '\`'.

使用标准查询文件中解析查询

select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'

保存查询文件,例如. query.sql和这样的查询

MysqL -u root -pPass mydb < query.sql

解决方法:

MysqL并在bash shell中使用后退标记

如下所示的查询将失败,因为后面的刻度字符在shell中具有特殊含义:

MysqL -u root -pPass mydb -e "select `work-time` from work"

从shell执行sql时,必须转义后退字符或在单引号字符串中使用.单引号字符串的示例如下:

MysqL -u root -pPass mydb -e 'select `work-time` from work'

要使用双引号完成相同的查询,我们需要转义后退刻度字符,如下所示:

MysqL -u root -pPass mydb -e "select \`work-time\` from work"

我建议在bash shell中阅读difference between double quotes and single quotes.

示例问题1:

"select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'"

以上查询无效.但是,您可以使用单引号完成此操作,但您需要转义查询中的任何单引号,如下所示:

'select `work-time` from work where `work-time`> \'2013-0-3-07 00:00:00\''

示例问题2:

"select \`work-time\` from work where \`work-time\`> \'2013-0-3-07 00:00:00\'"

上面的查询几乎是好的,因为你需要逃避后面的勾号,因为它具有特殊含义.但是,您不需要转义单引号.使用双引号,查询可能如下所示:

"select \`work-time\` from work where \`work-time\`> '2013-0-3-07 00:00:00'"

返回sql文件中的刻度

如果您随后决定将此查询放在一个文件中并将其发送到MysqL,那么您将不再需要转义后退刻度字符,因为后面的刻度字符在sql文件中没有特殊含义.在文件中,您只需要放置标准sql

select `work-time` from work where `work-time` > '2013-0-3-07 00:00:00'

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...