MySQL の結合フィールドの Concat()

MySQL の結合フィールドの Concat()

1. はじめに

MySQLはリレーショナル データベースです。使用する際、オブジェクトの属性を列にマッピングしてテーブルに格納することがよくあります。そのため、クエリ結果も処理されていない個別の属性です。MySQL で返された結果セットをMySQLし、複数のフィールド (列) の値をまとめて返したり、特定の計算を行った後に返したりする場合は、 MySQLが提供するフィールド計算機能を使用できます。

フィールド計算では、次の 2 つのタイプがよく使用されます。

  • フィールドの連結
  • 算術計算を実行するフィールド

2. 本文

MySQLで実装されているすべてのフィールドの組み合わせはクライアントで完了できますが、 MySQLサーバーで直接フィールドの組み合わせを実装すると、クライアントよりも高速になります。

2.1 フィールドの連結

ユーザー テーブルを準備し、次のようにいくつかのレコードを挿入します。

名前を設定します utf8mb4;

FOREIGN_KEY_CHECKS = 0 を設定します。

-- ----------------------------

-- ユーザー用テーブル構造

-- ----------------------------

`user` が存在する場合はテーブルを削除します。

テーブル `user` を作成します (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主キー',

  `name` varchar(255) 文字セット utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ユーザー名',

  `nation` varchar(255) 文字セット utf8 照合 utf8_general_ci NULL デフォルト NULL コメント 'Ethnicity',

  BTREE を使用した主キー (`id`)

) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- ユーザーの記録

-- ----------------------------

INSERT INTO `user` VALUES (1, '李子八', '汉族');

INSERT INTO `user` VALUES (2, '张三', '慧族');

INSERT INTO `user` VALUES (3, '李四', 'Uyghur');

INSERT INTO `user` VALUES (4, '王五', '蒙古');

FOREIGN_KEY_CHECKS = 1 を設定します。

必要:

ユーザーの名前と民族の組み合わせ情報を取得します

声明:

mysql> user から、name, '(',nation, ')') を選択します。

+---------------------------------+

| concat(名前、'('、国、')') |

+---------------------------------+

| 李子巴(漢民族)|

| 張三(ホイ) |

| 李斯(ウイグル語) |

| 王武(モンゴル語)|

+---------------------------------+

分析:

ここではconcat()関数が使用されています。関数では任意の数の要素を組み合わせることができます。これらの要素は、テーブル フィールド、固定文字などです。要素は で区切られ、組み合わせの順序はconcat()関数内の文字の順序と同じです。

結合後のフィールド名はどうなりますか?

注意深い友人は、結合後のフィールド名がconcat()関数の関数本体全体を使用していることを発見しました。明らかに、この表示は私たちが望んでいるものではありません。必要なフィールド名を指定したい場合は、エイリアスを使用してください。

mysql> user から user_message として concat(name, '(',nation, ')') を選択します。

+------------------+

| ユーザーメッセージ |

+------------------+

| 李子巴(漢民族)|

| 張三(ホイ) |

| 李斯(ウイグル語) |

| 王武(モンゴル語)|

+------------------+

エイリアスの使用方法は、 as後に指定するフィールド名を続けることです。

2.2 フィールドでの算術計算の実行

フィールドを結合する場合、単に文字列を連結する以上の処理を実行することがよくあります。フィールド間の算術計算が必要になる場合があります。この場合、 MySQLの算術演算子を使用する必要があります。

MySQL は、次のように加算、減算、乗算、除算の演算子を提供します。

オペレーター例示する
+追加
-減らす
*取る
/

製品テーブルを準備し、次のようにいくつかのレコードを挿入します。

名前を設定します utf8mb4;

FOREIGN_KEY_CHECKS = 0 を設定します。



-- ----------------------------

-- 製品のテーブル構造

-- ----------------------------

`product` が存在する場合はテーブルを削除します。

テーブル「product」を作成します(

  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主キー',

  `product_name` varchar(255) 文字セット utf8 COLLATE utf8_general_ci NOT NULL COMMENT '製品名',

  `price` 10進数(10, 2) UNSIGNED NOT NULL COMMENT '製品価格',

  `number` int(11) NOT NULL COMMENT '製品数量',

  BTREE を使用した主キー (`id`)

) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- 製品の記録

-- ----------------------------

`product` に VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00, 22) を挿入します。

`product` VALUES (2, 'HUAWEI P50 Pro', 6488.00, 88) に INSERT INTO します。

`product` VALUES (3, 'MIX4', 4999.00, 30) に INSERT します。

`product` VALUES (4, 'OPPO Find X3', 3999.00, 15) に INSERT INTO します。

`product` VALUES (5, 'vivo X70 Pro+', 5999.00, 27) に INSERT INTO します。

FOREIGN_KEY_CHECKS = 1 を設定します。

必要:

現在の在庫商品の合計金額を照会する

声明:

mysql> product_name を選択し、(price * number) を gross_value として product から連結します。

+-------------------------+--------------+

| 商品名 | 総額 |

+-------------------------+--------------+

| Apple iPhone 13 (A2634) | 149578.00 |

| HUAWEI P50 Pro | 570944.00 |

| ミックス4 | 149970.00 |

| OPPO Find X3 | 59985.00 |

| ヴィヴォ X70 Pro+ | 161973.00 |

+-------------------------+--------------+

演算子順序の問題:

MySQLの演算子にも順序があり、これは通常の演算子の演算順序と同じです(* / ) > (+ -) 。複合演算子を使用する場合は、演算子の順序に注意する必要があります。() を適切に使用すると、演算子の実行順序を制約できます。

例:

mysql> select concat(12 - 3 * 4);

+--------------------+

| 連結(12 - 3 * 4) |

+--------------------+

| 0 |

+--------------------+

セット内の 1 行 (0.00 秒)

mysql> select concat((12 - 3) * 4);

+----------------------+

| 連結((12 - 3) * 4) |

+----------------------+

| 36 |

+----------------------+

セット内の 1 行 (0.00 秒)

MySQLでは、被除数が 0 の場合、例外はスローされず、 NULLが返されることに注意してください。これは、 MySQL操作を異常に処理するためです。

mysql> select concat(12 / 0);

+----------------+

| 連結(12 / 0) |

+----------------+

| NULL |

+----------------+

セットに 1 行、警告 1 件 (0.00 秒)

これで、MySQL のconcat()に関するこの記事は終了です。MySQL のconcat()の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLで挿入と選択をネストして使用すると、結合されたフィールドを挿入する問題が解決されます。
  • MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します
  • MySQLのgroup_concat()関数のソート方法についての簡単な説明
  • mysql group_concat() 関数の使用法の概要
  • mysqlはgroup_concat()を使用して複数行のデータを1行に結合します。
  • Mysql GROUP_CONCAT() 関数の使い方

<<:  Bootstrap 3.0 学習ノートのページレイアウト

>>:  Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

推薦する

独立した IP を介して Windows コンテナ イントラネットの Docker に直接アクセスする方法

Docker では、ポート マッピングを使用して、Docker コンテナーのサービスをホスト マシン...

CSS3を使用してテキストの垂直配置を実現する方法

最近のプロジェクトでは、テキストを垂直に揃えたいと考え、CSS の writing-mode プロパ...

yum の基本的な使い方と例(推奨)

yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...

MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明

1. クラスター化インデックステーブル データはインデックスの順序で保存されます。つまり、インデック...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

Vue+Openlayer で select を使用して要素を選択する実装コード

効果画像: 実装コード: <テンプレート> <div id="map&q...

開発者とオペレーターが注目すべき Linux デバッグ ツール [推奨]

システム パフォーマンスの専門家である Brendan D. Gregg 氏は、LinuxCon N...

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

ウェブページを自動更新するための 3 つのコード

実際、この効果を実現するのは非常に簡単で、この効果は特殊効果と呼ぶことすらできません。次のコードを ...

ブラウザ間の hr 区切り文字の違い

Webページを作るときに、区切り線hrを使うことがありますが、IE6やIE7で表示するのは非常に苦痛...

MySQL クエリのパケットが大きすぎる問題と解決策

問題の説明:エラーメッセージ:原因: com.mysql.jdbc.PacketTooBigExce...

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

Ubuntu 16.04.4LTS に mininet をインストールする際に発生する問題と解決策

ミニネットMininet は軽量のソフトウェア定義ネットワークおよびテスト プラットフォームです。軽...

面白いウェブサイトをデザインするための方法とテクニック(写真)

他の人から「つまらない」とか「時代遅れ」というフィードバックを受けて、それを変更しようとしたのに、更...