从 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中文网其他相关文章!