SQL連結文字列を使用する賢い方法

SQL連結文字列を使用する賢い方法

構造化照会言語 (SQL)は非常に強力なツールであり、機能が満載です。あなたが最も習得したら 重要なSQLコマンド 、SQLを使用してもう少しクリエイティブになり始めることができます。今日は、SQL連結文字列について知っておく必要のあるすべてを紹介します。





多くの異なるSQL方言があります。これらすべての例で、私は PostgreSQL 変異体。





リンクが安全かどうかを確認する方法

連結とは何ですか?

連結とは、2つのものを結合することを意味します。プログラミング言語で2つの文字列を結合するために使用した可能性があります。おそらく、フルネーム変数として結合した名変数と名前変数があります。





連結は、2つの文字列を1つに結合する非常に便利な方法です。 PHP ピリオドを使用して文字列を結合しますが、 JavaScript およびjQueryはプラス記号を使用します。

SQLの連結はまったく同じように機能します。特別な演算子を使用して、2つのものを1つに結合します。これがの例です 擬似コード



first_name = Joe
last_name = Coburn
whole_name = first_name + last_name

プログラミング言語では、連結によってコードが読みやすくなります。コードが常に2つの文字列にアクセスする必要がある場合、それらを1つに結合すると、覚えやすくなり、コードの長さが短くなります。

SQLの変数はあまり一般的ではありませんが(ただし、引き続き使用されます)、結合された結果を返したり、データを操作したりするには、連結が必要です。





連結する方法

連結は とても SQLで簡単。 SQLは一般的な言語ですが、個々のデータベースエンジンはさまざまな方法で機能を実装します。これらの例はすべてPostgreSQL方言に含まれていますが、Webで「連結」を検索するだけで他のバリアントに簡単に翻訳できます。エンジンが異なれば、連結の構文も異なる場合がありますが、原則は同じです。

名前の例に戻ると、ここに基本的なものがあります 選択する クエリ:





SELECT first_name, last_name, email FROM users_table

ここでは複雑なことは何もないので、連結を追加しましょう。

SELECT first_name || last_name AS full_name, email FROM users_table

ご覧のとおり、この連結は完全に機能していますが、小さな問題が1つあります。結果のフルネームは、両方の列の積とまったく同じようにつなぎ合わされています。名前の間にはスペースが必要です。

幸い、修正は簡単です。2つの間にスペースを連結するだけです。

SELECT first_name || ' ' || last_name AS full_name, email FROM users_table

これらは基本的な例ですが、連結がどのように機能するかを確認する必要があります。これは本当に簡単です。パイプ演算子( | )は句の間に2回使用されます。 SQLエンジンは、このシンボルの前後の各部分を結合して1つとして扱う必要があることを認識しています。ただし、concat演算子を使用しても何も連結しないと、エラーが発生するので注意してください。

上記のように、これらの例ではSQLのPostgreSQLバリアントを使用しています。他のバリアントは、異なる演算子、または呼び出す必要のある特別な関数を使用する場合があります。それは本当に重要ではありません どうやって データベースエンジンが期待する方法で文字列を連結します。

深くなる

基本を理解したところで、いくつかの一般的な落とし穴とともに、いくつかの詳細な例を見てみましょう。

ほとんどのデータベースエンジンは、文字列と整数の混合、場合によっては日付も正常に連結します。配列などの複雑な型を連結しようとすると、通常、問題が発生します。

SELECT first_name || ' ' || last_name || ARRAY[123, 456] AS full_name, email FROM users_table

このコードは機能しません。 文字列を配列などの複雑なオブジェクトと組み合わせることはできません。何をする必要があるかを考えると、実行に失敗する複雑でクレイジーなコードではなく、機能する単純なコードを記述できることがよくあります。

何をする必要があるかを慎重に考えても、SQLを機能させることができない場合は、プログラミング言語の使用を検討しましたか?レガシーコードに取り組んでいるソフトウェア開発者として、誰かがSQLをデバッグしようとする苦痛を知っているので、誰かが非常に多くのロジックを詰め込んでいるのは不思議です-SQLでロジックを書き込もうとしている場合は、プログラミング言語(習得しやすい言語はたくさんあります)。

連結は非常にうまく機能します どこ ステートメントも:

SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR')::date

ここで起こっていることがいくつかあります。この例では、 、 と スクリプトから渡されたパラメータです。たぶん、これらはコードによって生成されたか、ユーザーによって入力されたものです。これらは連結されてから、日付型にキャストされます(PostgreSQLの日付にキャストされた構文を使用) ::日にち )。

このように連結を使用すると、日付の個々の部分をチェーン化でき、文字列ではなく「実際の」日付として処理できます。この基本的な例はSQLインジェクションから保護されていないことを忘れないでください。したがって、変更せずに本番コードで使用しないでください。

注意すべきもう1つの落とし穴は ヌル 値(null文字列は空または存在しない文字列です)。このクエリが与えられた場合:

SELECT first_name || ' ' || NULL AS full_name, email FROM users_table

このクエリはサイレントに失敗します。 これは、データベースエンジンで連結が内部的にコーディングされている方法によるものです。この問題が常に発生するとは限りませんが、よくあることです。

クエリが返すデータがnullである可能性があると思われる場合は、 合体 。 Coalesceは、大まかに「これがnullの場合は、この他の文字列または列に置き換えてください」と考えることができます。

SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table

SQLで連結を使用する方法がわかったので、それをどうしますか?あなたはそうする ウェブサイトを作る そしてそれをSQLで活気づけますか?または、Webサイトを構築するためのより簡単なアプローチのために、静的サイトジェネレーターが必要な場合もあります。

何をするにしても、下のコメントで知らせてください!

ネットワークアイコンはインターネットにアクセスできないと言っていますが、私はWindows10に接続しています
共有 共有 つぶやき Eメール 6つの可聴の選択肢:最高の無料または安価なオーディオブックアプリ

オーディオブックにお金をかけたくない場合は、無料で合法的にオーディオブックを聴くことができる優れたアプリをいくつか紹介します。

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • SQL
著者について ジョーコバーン(136件の記事が公開されました)

Joeは、英国のリンカーン大学でコンピュータサイエンスを卒業しています。彼はプロのソフトウェア開発者であり、ドローンを飛ばしたり音楽を書いたりしていないときは、写真を撮ったりビデオを制作したりしていることがよくあります。

ジョーコバーンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください