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はアップロードコンポーネントを実装します

目次1. はじめに2. アイデアファイルをアップロードする2つの方法3. ライフサイクル4. コード...

「さらに表示」ボタンによる複数行テキストの切り捨てに関する考察

最近、たまたまこの小さな要件に遭遇しました。昔、JS を使用してこれを処理したことを覚えていますが、...

MySQLのインストールと設定に関する詳細なチュートリアル

目次インストール不要のMySQLバージョン1. インストール パッケージをダウンロードします。 2....

Mysql のデッドロックの表示とデッドロックの除去の詳細な説明

序文しばらく前にMysqlのデッドロック問題に遭遇したので、解決しました。問題の説明: Mysql ...

ブラウザでビデオプレーヤーを実装するための基本的な考え方とコード

目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...

DockerのTLS(SSL)証明書の有効期限の問題を解決する

問題現象: [root@localhost ~]# docker イメージをプル xxx.com.c...

MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...

ウェブページ上の小さなスペースに大きな画像を配置する方法

出典: www.bamagazine.comウェブページのバナー、ニュースの見出しの周りのスペース、...

Reactでコンポーネントがどのように通信するかの詳細な説明

1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。コンポーネントコ...

Docker で nginx の https を設定する方法

https をサポートしていない Web サイトは、ブラウザによって徐々に安全でないとマークされるた...

CSS のサイズと幅と高さのブラウザ解釈の違いに対する解決策

まずは例を見てみましょうコードをコピーコードは次のとおりです。 <!DOCTYPE html ...

Docker で MySQL 接続と設定ファイルの最大数を変更する

1. MySQLイメージを見つける ドッカーps 2. ミラーmysqlイメージを入力する dock...

HTML で 2 列レイアウトを実装する方法の例 (左側は固定幅、右側は適応幅)

HTMLは2列レイアウトを実装し、左側は固定幅、右側は適応幅です。実装1: <スタイル>...

MySQLはイベントを使用してスケジュールされたタスクを完了します

イベントでは、SQL コードを 1 回または一定の間隔で実行することを指定できます。通常、複雑な S...

JavaScriptでページスクロールアニメーションを実装する

目次レイアウトを作成するCSSスタイルを追加するJavaScript で要素を操作する対象要素を取得...