我在 linux bash 上查询 mysql 有问题,我的查询有 2 个带有“-”的列:
mysql -u root -pPass mydb -e "select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'";
Run Code Online (Sandbox Code Playgroud)
但结果:
bash: work-time: command not found
Run Code Online (Sandbox Code Playgroud)
我知道这个引用“`”的问题,但如何解决这个问题?
我更新我的查询
在线解决查询:
mysql -u root -pPass mydb -e "select \`work-time\` from work where \`work-time\`> '2013-0-3-07 00:00:00'"
Run Code Online (Sandbox Code Playgroud)
其他问题
如果我将查询保存在文件中,并像这样查询
mysql -u root -pPass mydb < query.sql
Run Code Online (Sandbox Code Playgroud)
得到错误:
ERROR at line 1: Unknown command '\`'.
Run Code Online (Sandbox Code Playgroud)
使用标准查询从文件中解决查询
select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'
Run Code Online (Sandbox Code Playgroud)
将查询保存到文件,例如。query.sql,并像这样查询:
mysql -u root -pPass mydb < query.sql
Run Code Online (Sandbox Code Playgroud)
Mysql 和在 bash shell 中使用反引号
由于反引号字符在 shell 中具有特殊含义,如下所示的查询将会失败:
mysql -u root -pPass mydb -e "select `work-time` from work"
Run Code Online (Sandbox Code Playgroud)
从 shell 执行 sql 时,反引号字符必须转义或在单引号字符串内使用。单引号字符串的示例如下:
mysql -u root -pPass mydb -e 'select `work-time` from work'
Run Code Online (Sandbox Code Playgroud)
要使用双引号完成相同的查询,我们需要转义反引号字符,如下所示:
mysql -u root -pPass mydb -e "select \`work-time\` from work"
Run Code Online (Sandbox Code Playgroud)
我建议阅读bash shell 中双引号和单引号之间的区别。
示例问题 1:
"select `work-time` from work where `work-time`> '2013-0-3-07 00:00:00'"
Run Code Online (Sandbox Code Playgroud)
上面的查询将不起作用。但是,您可以使用单引号来完成此操作,但您需要转义查询内的任何单引号,如下所示:
'select `work-time` from work where `work-time`> \'2013-0-3-07 00:00:00\''
Run Code Online (Sandbox Code Playgroud)
示例问题 2:
"select \`work-time\` from work where \`work-time\`> \'2013-0-3-07 00:00:00\'"
Run Code Online (Sandbox Code Playgroud)
上面的查询几乎很好,因为您确实需要转义反引号,因为它具有特殊含义。但是,您不需要转义单引号。使用双引号时,查询可能如下所示:
"select \`work-time\` from work where \`work-time\`> '2013-0-3-07 00:00:00'"
Run Code Online (Sandbox Code Playgroud)
SQL 文件内的反引号
如果您随后决定将此查询放入文件中并将其发送到 mysql,您将不再需要转义反引号字符,因为反引号字符在 sql 文件中没有特殊含义。在该文件中,您只需放入标准 SQL:
select `work-time` from work where `work-time` > '2013-0-3-07 00:00:00'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |