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

推薦する

Vueデータ監視の原理の詳細な説明

<本文> <div id="ルート"> <h1&...

NodeとPythonの双方向通信実装コード

目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...

概要ページでのフロートとクリアフロート

1. フロート: 主な目的は、テキストを画像の周囲に折り返す効果を実現することです。また、複数列レイ...

HTMLデータ送信投稿_PowerNode Java Academy

HTTP/1.1 プロトコルで指定されている HTTP リクエスト メソッドには、OPTIONS、...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

フォームの「Enter」、「Submit」、「Enter != Submit」を削除する方法

「Enter != Submit」問題を実装するには、通常、「ボタンの種類」と「入力ボックスの数」か...

Vueフィルターの使い方

目次概要フィルターの定義フィルターの使用カスタムグローバルフィルターローカルフィルター予防例1(ロー...

Jenkins+Docker継続的インテグレーションの実装

目次1. Jenkinsの紹介2. Jenkinsをインストールしてデプロイする1. 環境情報2. ...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

表示しているページのスナップショットを Baidu が保存できないように設定する方法

今日、Baidu でページを検索したところ、ページが削除されていたため、当然 Baidu スナップシ...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

MySQL スロークエリログの有効化と設定

導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...

CSS 画像アニメーション効果のサンプルコード(フォトフレーム)

この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...