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

値を1つのフィールドから2つに分割

    残念ながら、MySQLは文字列分割関数を備えていません。ただし、ユーザー定義関数 を作成できます。 このため、次の記事で説明されているようなものです:

    その機能で:

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

    次のようにクエリを作成できます。

    SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
           SPLIT_STR(membername, ' ', 2) as memberlast
    FROM   users;
    

    ユーザー定義関数を使用したくない場合で、クエリをもう少し冗長にしてもかまわない場合は、次のようにすることもできます。

    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 1), ' ', -1) as memberfirst,
           SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 2), ' ', -1) as memberlast
    FROM   users;
    


    1. タイムゾーンオフセットを使用して日付を取得する

    2. MySQLで行の値を列として表示する方法

    3. SQLServerでビューを作成する方法

    4. インストール時にアプリケーションがクラッシュし、エラーsqlite3_exec-同期モードの設定に失敗しました=1(通常)