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

テキストの位置を見つけ、テキストを抽出して、MySQLの新しい列に挿入します

    'Country ='に続くテキストを選択し、その部分文字列を取得したら、最初の'&'

    の前のテキストを選択します。
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(ColumnA, 'Country=', -1), '&', 1) AS ColumnB
    FROM `atable`
    

    http://dev.mysqlを参照してください。 com / doc / refman / 5.6 / en / string-functions.html#function_substring-index

    実証するテストは次のとおりです。

    mysql> SELECT * FROM atable;
    +------+------------------------------------------+
    | row  | columna                                  |
    +------+------------------------------------------+
    | Row1 | Lauguage=English&Country=USA&Gender=Male |
    | Row2 | Gender=Female&Language=French&Country=   |
    | Row3 | Country=Canada&Gender=&Language=English  |
    +------+------------------------------------------+
    
    mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(ColumnA, 'Country=', -1), '&', 1) AS ColumnB FROM atable;
    +---------+
    | ColumnB |
    +---------+
    | USA     |
    |         |
    | Canada  |
    +---------+
    

    フォローアップの質問について:

    INSERT INTO atable VALUES ('Row4', 'Gender=&Language=English');
    
    SELECT `row`, IF(LOCATE('Country=', ColumnA)>0, 
      COALESCE(
        NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(ColumnA, 'Country=', -1), '&', 1), ''), 
        'Blank string is not valid!'), 
     'Missing Country!') AS ColumnB     
    FROM `atable`
    
    +------+----------------------------+
    | row  | ColumnB                    |
    +------+----------------------------+
    | Row1 | USA                        |
    | Row2 | Blank string is not valid! |
    | Row3 | Canada                     |
    | Row4 | Missing Country!           |
    +------+----------------------------+
    


    1. インデックスのDOとDONT

    2. WSJDBCConnectionは、タイプOraclejdbcConnectionのオブジェクトをラップしません

    3. CALライセンスに基づくSQLServer2012EnterpriseEditionのパフォーマンスの問題

    4. データベース構造変更のためのバージョン管理システムはありますか?