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はカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

推薦する

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

emとは?emとpxの紹介と変換方法

それは何ですか? em はフォントの高さを指し、どのブラウザでもデフォルトのフォントの高さは 16 ...

MySQL データベース開発仕様 [推奨]

最近、問題のある新しい SQL が本番データベースに入力される数を最小限に抑えるために、開発仕様を整...

MySQL IFNULL判定問題の解決方法

問題: mybatis によって返される null 型のデータが消え、フロントエンドの表示にエラーが...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...

MySQLデータベースとテーブルシャーディングの概要

プロジェクトの開発中に、データベースのデータがどんどん大きくなり、その結果、1 つのテーブルにデータ...

Linux システムのユーザー管理コマンドの概要

ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...

Nginx プロセス スケジューリングの問題の詳細な説明

Nginx は、マスター プロセス (MasterProcess) と、同じ数のホスト CPU コア...

Vue + Axios リクエストインターフェース方式とパラメータ渡し方式の詳しい説明

目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...

Vue3のdefineComponentの役割についての簡単な説明

目次defineComponent オーバーロード関数開発実務defineComponent 関数は...

HTM と HTML の違いは何ですか? HTM と HTML の違いは何ですか?

Web デザインを学習する過程で、html と htm の関係など、遭遇した多くの問題について深く...

Nginx における accept lock の仕組みと実装の詳細な説明

序文nginx はマルチプロセス モデルを使用します。リクエストが届くと、システムはプロセスをロック...

MySQL メモリテーブルと一時テーブルの使用方法の詳細な説明

MySQL メモリ テーブルと一時テーブルの使用メモリテーブル: セッション 1 $ mysql -...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...