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

Mysqlは、特定の列の各単語の最初の文字を抽出します

    これが「改善された」機能で、正規表現のおかげで必要な文字だけをフィルタリングできます。

    • 関数initials 実際の仕事をするために、正規表現を指定する必要があります
    • 関数acronym 英数字のみを保持する仕事をします

    upperを使用します 、lower またはucase 必要に応じて出力で機能します。

    delimiter $$
    drop function if exists `initials`$$
    CREATE FUNCTION `initials`(str text, expr text) RETURNS text CHARSET utf8
    begin
        declare result text default '';
        declare buffer text default '';
        declare i int default 1;
        if(str is null) then
            return null;
        end if;
        set buffer = trim(str);
        while i <= length(buffer) do
            if substr(buffer, i, 1) regexp expr then
                set result = concat( result, substr( buffer, i, 1 ));
                set i = i + 1;
                while i <= length( buffer ) and substr(buffer, i, 1) regexp expr do
                    set i = i + 1;
                end while;
                while i <= length( buffer ) and substr(buffer, i, 1) not regexp expr do
                    set i = i + 1;
                end while;
            else
                set i = i + 1;
            end if;
        end while;
        return result;
    end$$
    
    drop function if exists `acronym`$$
    CREATE FUNCTION `acronym`(str text) RETURNS text CHARSET utf8
    begin
        declare result text default '';
        set result = initials( str, '[[:alnum:]]' );
        return result;
    end$$
    delimiter ;
    

    例1:

    select acronym('Come Again? That Cant Help!');
    

    出力:

    例2:

    select initials('Come Again? That Cant Help!', '[aeiou]');
    

    出力:



    1. SQLServerでクエリタイムアウトを強制する

    2. OracleRACHAソリューションとGaleraClusterforMySQLまたはMariaDBの比較

    3. SQLServer2017の復元

    4. mysqldumpを使用してMySQLまたはMariaDBをバックアップします