色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 正則提取字符串

錢淋西2年前10瀏覽0評論

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列中。