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ボタンのサンプルコード

推薦する

Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。こ...

CSS3 を使って本のページめくり効果を実現するサンプルコード

重要なポイント: 1. CSS3 3Dアニメーションをマスターする2. ページめくり後のページ内容の...

JS ES の新機能: 拡張演算子の紹介

1. スプレッド演算子スプレッド演算子は 3 つのドット ... で、複数の引数 (関数呼び出しなど...

JavaScript のクロージャの詳細な説明

導入クロージャは JavaScript の非常に強力な機能です。いわゆるクロージャは関数内の関数です...

Windows 64 ビットでの MySQL 8.0.13 のインストールと設定方法のグラフィック チュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

MYSQL サブクエリとネストされたクエリの最適化例の分析

ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...

MySQLインデックスの詳細

1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

Docker を使用して Nginx+Flask+Mongo アプリケーションをデプロイする

サーバーにはNginx、データベースサポートにはMongo、Python言語のWebフレームワークに...

情報製品の読書リストのインタラクティブなデザインに関する考えと経験の共有

リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...

携帯電話向けウェブページ作成のヒント

現在では多くの人がスマートフォンを使用していることを考慮すると、モバイル Web ページの書き方は、...

シンプルなタブバー切り替えケースを実現するJavaScript

この記事では、タブバーの切り替え効果を簡単に実現するためのJavaScriptの具体的なコードを参考...

Dockerネットワーク作成に--subnetを追加した後の問題を解決する

Docker ネットワークの作成に –subnet を追加した後、docker network ls...

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

JSメモリ空間の詳細な説明

目次概要1. スタックとヒープ2. 変数オブジェクトと基本データ型3. 参照データ型とヒープメモリメ...