Dies muss nicht unbedingt etwas mit SQL im Besonderen zu tun haben, da ich sicher bin, dass dies auch bei anderen Befehlen der Fall ist.
In diesem Fall sende ich eine Abfrage über die Shell, und wenn die Abfrage mit keiner Tabelle übereinstimmt, wird buchstäblich nichts zurückgegeben, nicht einmal ein Wagenrücklauf.
Wie kann ich meine Shell so skripten, dass in einem solchen Fall stattdessen ein „ 0
oder“ false
zurückgegeben wird?
Hier ist mein Beispielbefehl, der mein Problem verursacht:
mysql -u Popey --password='Misses Jono' -s -N --disable-column-names -e
"select term_id from shuttleworth.wp_terms where name = 'nonExistentName' LIMIT 1;"
Antwort1
-v
Die Option für den ausführlichen Modus sollte Ihnen mehr Ergebnisse liefern. Ich kann das momentan nicht ausprobieren, da ich keinen SQL-Server laufen habe.
Antwort2
Mein Cousin hat mir diese Lösung angeboten. Ich habe sie getestet und sie funktioniert.
Einzelne Zeile:
response=$(mysql -u popey --password='Misses Jono' -s -N --disable-column-names -e "select term_id from shuttleworth.wp_terms where name = 'non-existent-name' LIMIT 1;") && if [ -z "$response" ]; then echo false; else echo $response; fi`
Heruntergebrochen:
response=
$(mysql
-u popey
--password='Misses Jono'
-s -N --disable-column-names
-e
"SELECT term_id
FROM shuttleworth.wp_terms
WHERE name = 'non-existent-name'
LIMIT 1;"
)
&& if [ -z "$response" ];
then echo false;
else echo $response;
fi