🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

7687閲覧

postgresqlでの適切な改行の仕方について

yoshi751

総合スコア19

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2019/12/17 17:46

編集2019/12/18 01:49

目的

postgresqlのコードで適切な改行をする

##問題
Postgresqlの学習をしているのですが、先日上司から、下記のコードについて、改行を工夫した方が可読性が上がるのでは?という指摘を頂いたのですが、

select coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ, 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009;

現在、学習している本では、この通りのコードが書いてあり、自分でもこの改行で良いと思うのですが、
どのように改行したら、見やすいと思いますでしょうか?
初学者で申し訳ありません。

##補足

3つの書き方のうち、どれが見やすいと感じるかアドバイスをお願い致します。

書き方1

select coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ , 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009;

書き方2

select coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ, 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009;

書き方3

select coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ , 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/12/17 18:11

>さらに適切 何が基準でしょうか。 軸がないと解決とできないのでは? 想定の動作をする以上、あとはルールや気になるか気にならないか個人レベルの問題にまで落ちます。
yoshi751

2019/12/18 01:28

そうですよね。ありがとうございます!
m.ts10806

2019/12/18 01:46

そのあたりきちんと質問に追記しておいてください
guest

回答2

0

ベストアンサー

見易さは人によるところもあるので、規約を設けて基準を持たないと何ともしがたいです。

文字に埋め込む形式の場合には、||Concat()を使うよりformat()(9.4. 文字列関数と演算子)
を使用した方がすっきりして可読性は向上はするかと思います。

SQL

1select format('%sは%sユーザです' 2 , coalesce(reg_name, '無名ユーザ') 3 , coalesce(typ, 'タイプ未定') 4 ) as ansswer_text 5from t_user 6where kaiin_no = 1009;

質問での改行ではありませんが、改行を埋め込む場合は

SQL

1select format(E'%sは\r%sユーザです' 2 , coalesce(reg_name, '無名ユーザ') 3 , coalesce(typ, 'タイプ未定') 4 ) as ansswer_text 5from t_user 6where kaiin_no = 1009;

個人的にという事であれば、私は,や||などは前方に配置するようにしているので、改行を意識した書き方というなら以下の様な書き方にするかな

SQL

1select 2 coalesce(reg_name, '無名ユーザ') 3 || 'は' 4 || coalesce(typ, 'タイプ未定') 5 || 'ユーザです' 6 as ansswer_text 7from t_user where kaiin_no = 1009;

SQL

1select concat( 2 coalesce(reg_name, '無名ユーザ') 3 , 'は' 4 , coalesce(typ, 'タイプ未定') 5 , 'ユーザです' 6 ) as ansswer_text 7from t_user where kaiin_no = 1009;

投稿2019/12/18 00:23

編集2019/12/18 01:47
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshi751

2019/12/18 01:43 編集

format()という書き方もできるのですね! 勉強になりました。ありがとうございます! ||の書き方で書く場合には、sazi様は 書き方1 select  coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ , 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009; 書き方2 select coalesce(reg_name, '無名ユーザ') || 'は' || coalesce(typ, 'タイプ未定') || 'ユーザです' as ansswer_text from t_user where kaiin_no = 1009; のどちらの書き方の方が見やすいでしょうか?
sazi

2019/12/18 01:43

回答に追記しました。
sazi

2019/12/18 10:50 編集

提示された書き方だと2ですね。 3のselectで段下げするならfromやwhereも揃えないと統一感が無いことと、 段下げで1行消費するのはSQL文が長くなり一度で見渡せなくなる場合もあり、 可読性は落ちること。
yoshi751

2019/12/18 07:43

sazi様ありがとうございます! とても参考になりました! sazi様の||を前方に配置するように変更したところ、OKをもらえました。 ベストアンサーに選ばさせていただきます。 また、疑問なことがあったら、質問させてください????‍♂️
guest

0

直接上司さんにお伺いした方が良いように思えます。
職場にコーディングルールがあるか確認されては?

個人的な書き方としては見易さを重視します。

SQL

1select 2 coalesce(reg_name, '無名ユーザ') || 'は' 3 || coalesce(typ , 'タイプ未定') || 'ユーザです' as ansswer_text 4from t_user 5where kaiin_no = 1009;

投稿2019/12/17 17:56

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshi751

2019/12/18 01:38

回答ありがとうございます!参考にしてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問