從MySQL 文字欄位擷取連續數字
在MySQL 中,以下查詢可以偵測包含2 位元數字的文字欄位:
SELECT `id`, `originaltext` FROM `source` WHERE `originaltext` regexp '[0-9][0-9]'
但是,要將這些數字作為單獨的欄位進行操作,需要進一步處理。這裡有兩個可能的解決方案:
使用 LIB_MYSQLUDF_PREG
LIB_MYSQLUDF_PREG 是增強正規表示式功能的 MySQL 函式庫。它引入了像 PREG_CAPTURE 這樣的函數,可以從字串中提取匹配項。
要使用此程式庫,您必須將其安裝到 MySQL 伺服器中。安裝後,您可以使用以下查詢來提取連續數字:
SELECT `id`, PREG_CAPTURE('[0-9][0-9]', `originaltext`) AS `digits` FROM `source`
使用自訂MySQL 函數
或者,您可以定義一個自訂MySQL 函數執行提取。例如,以下函數將提取第一個最長的匹配數字序列:
CREATE FUNCTION REGEXP_EXTRACT(string TEXT, exp TEXT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE s INT DEFAULT 1; ... -- Implementation to extract the matching digits ... END
要使用此函數,請按如下方式呼叫它:
SELECT `id`, REGEXP_EXTRACT(`originaltext`, '[0-9][0-9]') AS `digits` FROM `source`
附加條件(數字> 20)
新增數字應大於的條件20、只需將此條件加到任一查詢的WHERE 子句中:
WHERE `digits` > 20
以上是如何從 MySQL 文字欄位中提取連續數字並應用附加條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!