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

カンマ演算子によるMySQL文字列の区切り

    答えがわかりました

    最初に新しい関数を作成します

    CREATE FUNCTION SPLIT_STR(x VARCHAR(255), delim VARCHAR(12), pos INT)
    RETURNS VARCHAR(255)
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
    LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');
    

    次に、ストアドプロシージャを作成します

    DELIMITER ;;
    CREATE PROCEDURE Split(in fullstr varchar(255))
    BEGIN
        DECLARE a INT Default 0 ;
        DECLARE str VARCHAR(255);
    
        DROP TABLE IF EXISTS my_temp_table;
        CREATE temporary TABLE my_temp_table(ID INT AUTO_INCREMENT NOT NULL, description text, primary key(ID));
    
        simple_loop: LOOP
            SET a=a+1;
            SET str=SPLIT_STR(fullstr,",",a);
            IF str='' THEN
                LEAVE simple_loop;
            END IF;
            #Do Inserts into temp table here with str going into the row
            insert into my_temp_table (description) values (str);
       END LOOP simple_loop;
       select * from my_temp_table;
    END
    

    その後、call Split('asas,d,sddf,dfd');で呼び出すと それは私が望むものを私に出力します。

    すべての提案に感謝します。



    1. 1つのテーブルから選択し、別のテーブルに挿入しますoraclesqlクエリ

    2. ActiveRecord_Associations_CollectionProxyのRails未定義メソッド

    3. データベース行を作成するmysqldump

    4. SQL ServerでのTAN()の例