Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql wyodrębnia pierwszą literę każdego słowa w określonej kolumnie

Oto „ulepszona” funkcja, pozwalająca filtrować tylko pożądane znaki dzięki wyrażeniu regularnemu.

  • funkcja initials wykonuje rzeczywistą pracę, musisz podać wyrażenie regularne
  • funkcja acronym wykonuje swoją pracę zachowując tylko znaki alfanumeryczne

(Użyj upper , lower lub ucase funkcje na wyjściu, jeśli to konieczne).

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 ;

Przykład 1:

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

Wyjścia:

Przykład2:

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

Wyjścia:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Widoki MySQL

  2. Dokonaj automatycznego przyrostu, wypełniając poprzednio usunięty numer

  3. Utwórz tabelę, jeśli nie istnieje z mysqldump

  4. Wyłącz notację naukową MySQL

  5. Jak sprawdzić, czy mój stół to MyISAM lub Innodb?