sql >> データベース >  >> RDS >> Mysql

MySQLのリスト文字列から単一のアイテムを取得します

    このためのネイティブ関数はありません。 2つのSUBSTRING_INDEX関数を使用できます。そして、その特定のインデックス項目が存在するかどうかを確認する必要があります:

    SET @string:='1,2,3,4,5';
    SET @delimiter:=',';
    SET @n:=6;
    
    SELECT
      CASE WHEN
        CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
        @n*CHAR_LENGTH(@delimiter)-1
      THEN
        SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
      END;
    
    • SUBSTRING_INDEX(@string, @delimiter, @n) 文字列@stringから部分文字列を返します @nの前 @delimiterの出現 。
    • SUBSTRING_INDEX( ... , @delimiter, -1) 最後の区切り文字の右側にすべてを返します
    • 区切り文字@nかどうかを確認する必要があります 存在します。 REPLACE(@string, @delimiter, '')を使用して、区切り文字を使用して文字列の長さを減算し、区切り文字を削除した文字列を減算できます。 -そして、それが@n*CHAR_LENGTH(@delimiter)-1より大きいかどうかを確認します


    1. データベースと認証ユーザーからソルトされたパスワードを撤回する方法は?

    2. mysql-> tblに挿入(別のテーブルから選択)といくつかのデフォルト値

    3. bashからMySQLクエリを実行しているときに、影響を受ける行数を取得するにはどうすればよいですか?

    4. MYSQLを使用した複数のテーブルからのSQL結合データ