How to split comma separated text in MySQL stored procedure

后端 未结 9 1114
臣服心动
臣服心动 2020-12-05 11:30

How to split comma separated text (list of IDs) in MySQL stored procedure to use result in SQL \"IN\" statement.

SELECT * FROM table WHERE table.id IN (split         


        
9条回答
  •  Happy的楠姐
    2020-12-05 11:53

    OK, slightly "easier" but less geeky way for people like me:

    say you have one table 'combined_city_state' which looks like:

    'Chicago, Illinois'
    

    copy that to 2 other tables:

    CREATE TABLE city LIKE combined_city_state;
    INSERT city SELECT * FROM combined_city_state;
    
    CREATE TABLE state LIKE combined_city_state;
    INSERT state SELECT * FROM combined_city_state;
    

    You now have 3 tables with the same data as 'combined_city_state'.

    Install this function:

    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, '');
    

    Then apply this to each table to remove the extra index of data:

    UPDATE firms 
    SET city = (SELECT SPLIT_STR((city), ',', 1));
    
    
    UPDATE firms 
    SET state = (SELECT SPLIT_STR((state), ',', 2));
    

    This leaves you with one column of just cities, one of just states. You can now remove the original 'combined_city_state' column if you don't need anymore.

提交回复
热议问题