在Mysql數據庫中,有時候需要對某個字段進行分割,例如將一個地址字段拆分成省、市、區三個字段。下面介紹兩種常見的方法。
方法一:使用SUBSTRING_INDEX函數
SELECT SUBSTRING_INDEX('地址1|地址2|地址3', '|', 1) AS province, SUBSTRING_INDEX(SUBSTRING_INDEX('地址1|地址2|地址3', '|', 2), '|', -1) AS city, SUBSTRING_INDEX('地址1|地址2|地址3', '|', -1) AS area;
該方法通過SUBSTRING_INDEX函數對字符串進行分割,第一個參數為待分割的字符串,第二個參數為分割符,第三個參數為分割位置。上面的例子中,將字符串'地址1|地址2|地址3'以'|'為分割符分割成三個部分,而通過指定不同的分割位置得到了省、市、區三個字段。
方法二:使用正則表達式
SELECT REGEXP_SUBSTR('地址1|地址2|地址3', '([^|]+)', 1, 1) AS province, REGEXP_SUBSTR('地址1|地址2|地址3', '([^|]+)', 1, 2) AS city, REGEXP_SUBSTR('地址1|地址2|地址3', '([^|]+)', 1, 3) AS area;
該方法使用了REGEXP_SUBSTR函數,第一個參數為待分割的字符串,第二個參數為正則表達式,第三個參數為匹配開始位置,第四個參數為匹配位置。上面的例子中,正則表達式'([^|]+)'表示匹配除了'|'以外的任意字符,通過指定不同的匹配位置得到了省、市、區三個字段。