5

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'";

しかし、結果:

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
4

2 に答える 2

2

Mysqlとbashシェルでのバックティックの使用

バックティック文字はシェルで特別な意味を持つため、次のようなクエリは失敗します。

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

シェルからsqlを実行するときは、バックティック文字をエスケープするか、一重引用符で囲まれた文字列内で使用する必要があります。一重引用符で囲まれた文字列の例は次のとおりです。

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

二重引用符を使用して同じクエリを実行するには、次のようにバックティック文字をエスケープする必要があります。

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

bashシェルの二重引用符と一重引用符の違いを読むことをお勧めします。


問題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'
于 2013-03-07T04:14:42.053 に答える
0

バッククォート内のテキストは、裸または二重引用符内で使用される場合、コマンドとして解釈されます。

一重引用符を使用する必要があります。

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

または、バックティックをエスケープすることもできます。

mysql -u root -pPass mydb -e "select \`work-time\` from work"
于 2013-03-07T04:14:48.477 に答える