我在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'
MysqL -u root -pPass mydb < query.sql
解决方法:
如下所示的查询将失败,因为后面的刻度字符在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'"
如果您随后决定将此查询放在一个文件中并将其发送到MysqL,那么您将不再需要转义后退刻度字符,因为后面的刻度字符在sql文件中没有特殊含义.在文件中,您只需要放置标准sql:
select `work-time` from work where `work-time` > '2013-0-3-07 00:00:00'