要从mysql的字符串中提取数字,可以使用正则表达式和内置函数来完成。
下面介绍两种方法。
方法一:正则表达式
mysql提供了REGEXP_SUBSTR()
函数来实现正则表达式的匹配和提取。
语法如下:
REGEXP_SUBSTR(字符串, 正则表达式)
其中,正则表达式用来匹配字符串中想要的部分。这里使用正则表达式[0-9]+
,表示匹配连续的数字。
示例一:
假设有以下的数字字符串:
$str = 'abc123def456ghi';
现在需要从字符串中提取数字部分。
代码如下:
SELECT REGEXP_SUBSTR('abc123def456ghi', '[0-9]+');
输出结果为:
123
示例二:
再假设有以下的字符串:
$str = '2020年10月1日';
现在需要从字符串中提取年份。
代码如下:
SELECT REGEXP_SUBSTR('2020年10月1日', '[0-9]{4}');
输出结果为:
2020
方法二:内置函数
mysql提供了一些内置函数,可以直接从字符串中提取数字。
SUBSTRING_INDEX()
函数:用于在字符串中寻找并返回子字符串。它的语法如下:
SUBSTRING_INDEX(原字符串, 分隔符, 出现次数)
其中,分隔符是用来将字符串拆分成多个部分的标志。如果出现次数为正,则从左端开始计算,返回第n
个分隔符前面的子字符串;如果出现次数为负,则从右端开始计算,返回第n
个分隔符后面的子字符串。
REPLACE()
函数:用于将字符串中的字符替换成新的字符。它的语法如下:
REPLACE(原字符串, 要替换的字符, 新的字符)
示例一:
假设有以下的数字字符串:
$str = 'abc123def456ghi';
现在需要从字符串中提取数字部分。
代码如下:
SELECT REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX('abc123def456ghi', /^[0-9]/, -1), /^[^0-9]/, ''), ',', ''), ' ', '')+0 AS num;
输出结果为:
123456
示例二:
再假设有以下的字符串:
$str = '2020年10月1日';
现在需要从字符串中提取年份。
代码如下:
SELECT REPLACE(LEFT(SUBSTRING(str FROM 1 FOR 10), 4), ' ', '')+0 AS year;
输出结果为:
2020
以上就是通过正则表达式和内置函数来从mysql字符串中取数字的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql中取字符串中的数字的语句 - Python技术站