MySQLセグメンテーション関数substring()の具体的な使用法

MySQLセグメンテーション関数substring()の具体的な使用法

MySQL には、主に left()、right()、substring()、substring_index() の 4 つの文字列インターセプト関数があります。それぞれ独自の使用シナリオがあります。今日は少し時間を取って、それらについて説明させてください、マーク!

聲明一下:在MySQL中,下標索引是從1開始的,而不是像java中從0開始的喔!

ここに画像の説明を挿入

1. LEFT() 関数

LEFT(文字列、長さ) は、文字列の左側の最初の文字から始めて、長さ分の文字を抽出します。長さは 0 より大きくなければなりません。<= 0 の場合、空の文字列が返されます。次に例を示します。

mysql> web_info w から LEFT('www.csdn.net',5) を選択します。
+------------------+
| 左('www.csdn.net',5) |
+------------------+
| www.c |
+------------------+
セット内の 1 行 (0.00 秒)

2. RIGHT() 関数

LEFT(文字列、長さ) は、文字列の右側の最初の文字から始めて、長さ分の文字を順方向に抽出します。長さは 0 より大きくなければなりません。<= 0 の場合、空の文字列が返されます。

mysql> web_info w から RIGHT('www.csdn.net',5) を選択します。
+-------------------------+
| 右('www.csdn.net',5) |
+-------------------------+
| n.net |
+-------------------------+
セット内の 1 行 (0.00 秒)

3. SUBSTRING() 関数

substring() は文字列を分割するために特に使用される関数です。主に 2 つの形式があります。

  • SUBSTRING(文字列,位置);
  • SUBSTRING(文字列,位置,長さ);

以下は、上記 2 種類のステートメントの SQL 標準バージョンであり、同じ意味を持ちます。長いですが、より表現力豊かです。

SUBSTRING(位置からの文字列);
SUBSTRING(位置から長さまでの文字列);

SUBSTRING() の使用方法の例を 2 つ見てみましょう。

1.SUBSTRING(文字列,位置)

  • string : パラメータは操作対象となる文字列です。
  • position : パラメータは、部分文字列の開始文字を指定するために使用される"整數"です。位置は正または負の整数にすることができます。若position大于操作字符串的長度,則返回空字符串。

たとえば、文字列 "www.csdn.net" から部分文字列 "csdn.net" を取得するには、次の SELECT ステートメントに示すように、部分文字列の位置は 5 から始まる必要があります。

mysql> web_info w から部分文字列 ('www.csdn.net',5) を選択します。
+-----------------------------+
| 部分文字列('www.csdn.net',5) |
+-----------------------------+
日本語
+-----------------------------+
セット内の 1 行 (0.00 秒)

2.SUBSTRING(文字列,位置,長さ)

文字列と位置のパラメータに加えて、SUBSTRING 関数には長さのパラメータもあります。 length是一個正整數如果length<=0,那么會返回空字符串。

たとえば、www.csdn.net で csdn を取得する場合の SQL は次のようになります。

mysql> web_info w から部分文字列 ('www.csdn.net',5,4) を選択します。
+---------------------------------+
| 部分文字列('www.csdn.net',5,4) |
+---------------------------------+
日本語
+---------------------------------+
セット内の 1 行 (0.00 秒)

または、位置を設定して後ろから前へカウントします。SQL は次のようになります。

mysql> web_info w から部分文字列 ('www.csdn.net',-8,4) を選択します。
+--------------------------------+
| 部分文字列('www.csdn.net',-8,4) |
+--------------------------------+
日本語
+--------------------------------+
セット内の 1 行 (0.00 秒)

または、標準の SQL 形式で記述することもできます。SQL は次のようになります。

mysql> web_info w から部分文字列 ('www.csdn.net' FROM 5 FOR 4) を選択します。
+----------------------------------------+
| 部分文字列 ('www.csdn.net' 5 から 4 へ) |
+----------------------------------------+
日本語
+----------------------------------------+
セット内の 1 行 (0.00 秒)

さらに、MySQL の mid() と substr() は substring() 関数と同等です。

4. SUBSTRING_INDEX() 関数

SUBSTRING_INDEX(str,delim,count)は、特定の識別子「delim」で部分文字列を抽出する関数です。日常生活でよく使います。

  • delim : インターセプションはこの識別子を通じて行われます。delim には任意の文字を指定できますが、空にすることはできません。
  • count : 出現回数を表します。count が正の数の場合は、識別子が count 回出現する前の部分文字列を取得することを意味します。負の数の場合は、識別子が count 回出現した後の部分文字列を取得することを意味します。

たとえば、「www.csdn.net」の場合、識別子「.」が最初に出現する前の部分文字列を取得するには、SQL は次のようになります。

mysql> web_info w から SUBSTRING_INDEX('www.csdn.net','.',1) を選択します。
+---------------------------------------+
| SUBSTRING_INDEX('www.csdn.net','.',1) |
+---------------------------------------+
| ウェブサイト |
+---------------------------------------+
セット内の 1 行 (0.00 秒)

識別子 '.' が最初に出現した後の部分文字列を取得します。SQL は次のとおりです。

mysql> web_info w から SUBSTRING_INDEX('www.csdn.net','.',-2) を選択します。
+----------------------------------------+
| SUBSTRING_INDEX('www.csdn.net','.',-2) |
+----------------------------------------+
日本語
+----------------------------------------+
セット内の 1 行 (0.00 秒)

2 つの「.」の中央を取得しますか?ネスト可能で、SQL は次のようになります。

mysql> web_info w から SUBSTRING_INDEX(substring_index('www.csdn.net','.',2),'.',-1) を選択します。
+-----------------------------------------------------------------+
| SUBSTRING_INDEX(substring_index('www.csdn.net','.',2),'.',-1) |
+-----------------------------------------------------------------+
日本語
+-----------------------------------------------------------------+
セット内の 1 行 (0.00 秒)

ここに画像の説明を挿入

5. 実際の操作

テストテーブルとして web_info テーブルを使用し、データは次のようになります。

mysql> web_info から * を選択します。
+------+--------+----------------+---------------------+
| w_id | w_name | w_domain | pub_time |
+------+--------+----------------+---------------------+
| 1 | CSDN | www.csdn.net | 2020-09-03 11:29:29 |
| 5 | 百度 | www.baidu.com | 2020-09-18 14:37:38 |
| 6 | タオバオ | www.taobao.com | 2020-09-03 14:37:57 |
+------+--------+----------------+---------------------+
セット内の 3 行 (0.00 秒)

要件 1: web_info データのファーストレベルドメイン名を取得します。
注: これはあくまでも例であり、実際の状況とは異なる場合があります。たとえば、.com.cn などのマルチレベルサフィックスは個別に処理する必要があります。

mysql> web_info w から SUBSTRING_INDEX(w_domain,'.',-2),w.* を選択します。
+----------------------------------+------+--------+----------------+----------------------+
| SUBSTRING_INDEX(w_domain,'.',-2) | w_id | w_name | w_domain | pub_time |
+----------------------------------+------+--------+----------------+----------------------+
| csdn.net | 1 | CSDN | www.csdn.net | 2020-09-03 11:29:29 |
| baidu.com | 5 | 百度 | www.baidu.com | 2020-09-18 14:37:38 |
| taobao.com | 6 | タオバオ | www.taobao.com | 2020-09-03 14:37:57 |
+----------------------------------+------+--------+----------------+----------------------+
セット内の 3 行 (0.00 秒)

要件 2: w_domain フィールドのデータを第 1 レベル ドメイン名に変更します。

web_info を更新します。w_domain を SUBSTRING_INDEX(w_domain,'.',-2) に設定します。

変更されたクエリ:

mysql> web_info から * を選択;
+------+--------+------------+---------------------+
| w_id | w_name | w_domain | pub_time |
+------+--------+------------+---------------------+
| 1 | CSDN | csdn.net | 2020-09-03 14:54:59 |
| 5 | 百度 | baidu.com | 2020-09-03 14:54:59 |
| 6 | タオバオ | taobao.com | 2020-09-03 14:54:59 |
+------+--------+------------+---------------------+
セット内の 3 行 (0.00 秒)

さて、今日のMySQLの文字列分割機能は以上です。役に立ったら、ぜひ無料で共有してくださいね~~

MySQL セグメンテーション関数 substring() の具体的な使用法に関するこの記事はこれで終わりです。MySQL セグメンテーション関数 substring に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLの共通関数を使用してJSONを処理する方法
  • MySQLプロセス関数の一般的な使用例の分析
  • MySQL の PHP 操作における mysql_fetch_* 関数の一般的な使用方法のチュートリアル
  • Mysql関数呼び出しの最適化の詳細な説明
  • MySQL で sum 関数を使用する例のチュートリアル
  • MySQL DATE_FORMAT関数の使用
  • MySQLの基本の共通機能

<<:  NetEase ブログで使用されているシンプルな Web ページ コード

>>:  CSSアニメーションに基づくSVGボタンのサンプルコード

推薦する

MySQL のメモリ使用量と CPU 使用率が高い場合のテストと解決策

変更後: innodb_buffer_pool_size=576M ->256M InnoDB...

Vue-CLI3.xはプロジェクトをサーバーに自動的にデプロイします

目次序文1. scp2をインストールする2. テスト/本番環境サーバーのSSHリモートログインアカウ...

DockerにRedisコンテナをインストールするための実装手順

目次DockerにRedisをインストールする1. Redisイメージを見つける2. Redisイメ...

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...

win10 mysql 5.6.35 winx64 無料インストールバージョン設定チュートリアル

mysql 5.6.35 winx64無料インストールバージョン構成チュートリアルwin10、具体的...

vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. アイデア2. 準備2. ...

jsを使用してシンプルな虫眼鏡効果を実現します

この記事では、簡単な虫眼鏡効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な内...

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

Vue3 ドキュメント クイックスタート

目次1. セットアップ1. セットアップ関数の最初のパラメータ - props 2. 文脈2. セッ...

CentOS 7 で grub パスワードと単一ユーザー ログインを設定するサンプル コード

Centos7 と Centos6 では、GRUB パスワードの設定手順に大きな違いがあります。これ...

一般的な HTTP ステータス コード 10 個の詳細な説明

HTTP ステータス コードは、Web サーバーの HTTP 応答ステータスを示すために使用される ...

MySQLインデックスとは何ですか?わからない場合は聞いてください

目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...