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

mySqlのsplit()メソッドに類似したものはありますか?

    残念ながら、mysqlは関数が配列またはテーブル(私が知っている)を返すことを許可しないので、これを少しハックする必要があります。

    ストアドプロシージャのサンプルは次のとおりです:

    DELIMITER $$
    
    create function splitter_count (str varchar(200), delim char(1)) returns int
      return (length(replace(str, delim, concat(delim, ' ')))  - length(str)) $$
    
    CREATE PROCEDURE tokenize (str varchar(200), delim char(1))
    BEGIN
      DECLARE i INT DEFAULT 0;
      create table tokens(val varchar(50));
      WHILE i <= splitter_count(str, delim) DO
        insert into tokens(val) select(substring_index(SUBSTRING_INDEX(str, delim, i+1), delim, -1));
        SET i = i + 1;
      END WHILE;
    
    END $$
    
    DELIMITER ;
    

    これにより、文字列がトークン化され、行ごとに1つのトークンで、「トークン」と呼ばれるテーブルに値が挿入されます。あなたはそれを修正して、かなり簡単に何か役に立つことをすることができるはずです。また、入力長を200から増やすこともできます。



    1. JavaからMySQLデータベースを作成する

    2. 誰もがクラウドに移行していますか?

    3. OracleDatabase19cのオプティマイザ

    4. PHPを使用してMySQLデータベースに保存するIPアドレス