文字列を配列に分割するには、次の 3 つの MySQL 関数を使用する必要があります。 REVERSE(str) 文字の順序を逆にした文字列 str を返します。 区切り文字 delim が count 番目に出現した後の文字列 str の部分文字列を返します。 count が正の場合、最後の区切り文字から左側にあるすべての文字を返します (左から数えて)。 count が負の場合、最後の区切り文字から右側にあるすべての文字を返します (右から数えて)。 文字列 str 内のすべての出現箇所を文字列 to_str に置き換えた文字列 str を返します。 文字列を配列に分割する機能は、3 つの関数を組み合わせることで実現されます。 まず、2つの関数を記述します 1. 「特定の記号」で区切られたすべての文字列の数を取得します。関数の内容は次のとおりです。 (SQLコードをコピーしてNavicatで実行します) 区切り文字 $$ CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string_total`( f_string varchar(1000)、f_delimiter varchar(5) ) 戻り値 int(11) 始める -- 指定された文字列の合計数を取得します。 1+(length(f_string) - length(replace(f_string,f_delimiter,''))) を返します。 終わり$$ 区切り文字 ; 2. 文字列をセグメンテーションで抽出する (SQLコードをコピーしてNavicatで実行します) 区切り文字 $$ CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string`( f_string varchar(1000),f_delimiter varchar(5),f_order int) 戻り値 varchar(255) CHARSET utf8 始める -- 指定された文字列の区切られた数を取得します。 結果をvarchar(255)のデフォルトとして宣言します ''; 結果をreverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));に設定します。 結果を返します。 終わり$$ 区切り文字 ; 次に、これら2つの関数を組み合わせて、分割する文字列と区切り文字を入力し、特定の記号で分割した後の配列を出力するストアドプロシージャを作成します。 (SQLコードをコピーしてNavicatで実行します) 区切り文字 $$ プロシージャ `sp_print_result` を作成します ( IN f_string varchar(1000)、IN f_delimiter varchar(5) ) 始める -- 分離された文字列を取得します。 cnt int のデフォルトを 0 と宣言します。 i int をデフォルトで 0 と宣言します。 cnt = func_get_split_string_total(f_string,f_delimiter) を設定します。 存在する場合はテーブルを削除します tmp_print; 一時テーブル tmp_print を作成します (num int not null); i < cnt の間 する i = i + 1 と設定します。 tmp_print(num) に値を挿入します (func_get_split_string(f_string,f_delimiter,i)); 終了しながら; tmp_print から * を選択します。 終わり$$ 区切り文字 ; 次に、テストする文字列を入力します。 結果は以下のとおりです 解決策は次のとおりです。 実行: 実行: これで問題は解決します。 最後に、ストアドプロシージャとMySQL関数についてお話しましょう。 ストアド プロシージャは、特定のテーブルまたは他のオブジェクトに対するタスクを伴うユーザー定義の SQL ステートメントのコレクションです。ユーザーはストアド プロシージャを呼び出すことができますが、関数は通常、データベースによって定義されるメソッドであり、パラメータを受け取って特定のタイプの値を返しますが、特定のユーザー テーブルは関与しません。 ストアド プロシージャと関数にはいくつかの違いがあります。 1) 一般的に、ストアド プロシージャによって実装される機能はより複雑ですが、関数によって実装される機能はより対象を絞っています。ストアド プロシージャは強力で、テーブルの変更を含む一連のデータベース操作を実行できます。一方、ユーザー定義関数を使用して、グローバル データベースの状態を変更する一連の操作を実行することはできません。 2) ストアド プロシージャはレコードセットなどのパラメータを返すことができますが、関数は値またはテーブル オブジェクトのみを返すことができます。関数は 1 つの変数のみを返すことができますが、ストアド プロシージャは複数の変数を返すことができます。ストアド プロシージャのパラメータには、IN、OUT、INOUT の 3 つのタイプがありますが、関数には IN タイプのみ使用できます。ストアド プロシージャは宣言時に戻り値の型は必要ありませんが、関数は宣言時に戻り値の型を記述する必要があり、関数本体には有効な RETURN ステートメントが含まれている必要があります。 3) ストアド プロシージャでは非決定論的関数を使用できますが、非決定論的関数をユーザー定義関数の本体に組み込むことはできません。 4) ストアド プロシージャは通常、独立した部分として実行されます (EXECUTE ステートメントによって実行されます)。一方、関数はクエリ ステートメントの一部として呼び出すことができます (SELECT 呼び出し)。関数はテーブル オブジェクトを返すことができるため、クエリ ステートメントの FROM キーワードの後に配置できます。ストアド プロシージャは SQL ステートメントでは使用できませんが、関数は使用できます。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: uniappを使用してWeChatミニプログラムでEChartsを使用する方法
目次概要0. JavaScriptとWeb開発の基礎1. Vueの基本概念Vue コア機能コンポーネ...
ビジネスを想定: 2位の従業員の給与情報を見るデータベースを作成する emps が存在する場合はデー...
1. インストールプロセスMySQL バージョン: 5.7.18 1. my.ini ファイル(簡易...
目次序文コアコードコードのファイル表示部分序文この記事では主に、Vue プロジェクトでの添付ファイル...
このチュートリアルでは、MySQL 5.7.18のインストールと設定方法を参考までに紹介します。具体...
イメージをプルし、コンテナを作成してコンテナを実行するだけです。 docker run -d --r...
目次1. プロジェクト統合1. CDNインポート方法: 2. 箱の梱包を確認する3. 迅速な箱詰め4...
元のアドレス: https://blog.csdn.net/m0_46579864/article/...
この記事の例では、ドロップダウンボックス選択コンポーネントを実装するためのjsの具体的なコードを参考...
目次ガベージコレクション (GC) はなぜ必要なのでしょうか?ガベージコレクションとは廃棄物の発生ガ...
この記事では、フォーム検証を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...
1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...
inline-block プロパティ値は、「インライン」要素のマージンとパディングを制御する必要があ...
Promise は、ES6 で導入された非同期プログラミングのための新しいソリューションです。 Pr...
目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...