SQL文をコマンドで実行した場合に結果のみの値を取得する

MySQL(MariaDB)で、SQL分をコマンドで実行した場合にカラム無しの値を取得する

MySQL(MariaDB)で、SQL分をコマンドで実行するとカラムが表示されます。SQL分を叩く箇所をシェルスクリプト内で使いたいのでカラム無しで値のみで取得したいのでその方法を調べました

$ mysql -u root -p testdb -e 'SELECT id FROM user WHERE id = "admin";'
Enter password: 
+---------+
| id      |
+---------+
| admin   |
+---------+

「–silent, -s」のオプションを使用してカラム無しの値を取得する

「–silent, -s」オプションは、「silent」または「silent-skip」の意味をしていて、以下のような動作になります

  • -sオプション: サイレントモード。出力生成を少なくします。このオプションをさらに少ない出力を生成するために複数回提供することができます。

このオプションを「-ss」として使用するとカラム名を省略し、カラム区切り文字を無効化して値のみを取得できます

$ mysql -u root -p testdb -ss -e 'SELECT id FROM user WHERE id = "admin";'
Enter password:
admin

awkコマンド利用してカラム無しの値を取得する

awkコマンドを使用してもカラムなしの値が取得できます
「 awk 'NR>1 {print $1}’」で、ヘッダーを除く2行目から値を取得して、最初のフィールド(カラム)の値のみを取得しています

$ mysql -u root -p testdb -e 'SELECT id FROM user WHERE id = "admin";' | awk 'NR>1 {print $1}'
Enter password: 
admin

 

 

スポンサーリンク

0
0