MySQL正則表達式是提取復雜字符串的常用工具,可以通過MySQL正則表達式的函數從給定的字符串中提取需要的數據。MySQL提供了一些內置的正則表達式函數,例如REGEXP、REGEXP_REPLACE等,這些函數可以幫助我們實現更有效的數據提取。
我們可以使用MySQL正則表達式來提取URL中的域名。例如,我們可以使用以下查詢語句從URL中提取域名:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 3), '/', -1) domain FROM my_table WHERE url REGEXP '^(http|https)://';
這個查詢語句中,我們首先使用REGEXP函數確定URL是否以http或https開頭。如果URL以http或https開頭,則使用SUBSTRING_INDEX函數提取URL中的前三個斜線之間的內容,然后使用SUBSTRING_INDEX函數再次提取該內容中的最后一個斜線之后的部分。最后,我們將提取的結果存儲在domain列中。
另一個常見的用途是提取電話號碼中的區號。以下是一個示例:
SELECT REGEXP_REPLACE( REGEXP_REPLACE(phone, '[^0-9]+', ''), '^(1)?([0-9]{3})?([0-9]{3})([0-9]{4})$', CASE WHEN LENGTH(REGEXP_REPLACE(phone, '[^0-9]+', '')) = 10 THEN CONCAT('1', REGEXP_REPLACE(phone, '[^0-9]+', '')) ELSE REGEXP_REPLACE(phone, '[^0-9]+', '') END ) formatted_phone FROM my_table;
這里我們使用REGEXP_REPLACE函數按照特定的規則格式化電話號碼。首先,我們使用第一個REGEXP_REPLACE函數從電話號碼中刪除所有非數字字符。然后,使用第二個REGEXP_REPLACE函數按照我們的格式要求為電話號碼添加區號。我們首先判斷電話號碼的長度是否為10。如果是,則在電話號碼前加上1,否則不改變其區號。這個格式化后的電話號碼將存儲在formatted_phone列中。
上一篇mysql多個主鍵
下一篇css讓多出的部分隱藏