mysql如何提取薪资单位里的数字

目前薪资单位出现的有
千/月
万/月
万/年
比如1-1.2万/年
5-8千/月
1.2-1.8万/月
怎么用substring_index函数分别提取每个单位的两个数字呢,比如1 1.2 5 8 1.2 1.8

基本思路就是:
1、先截取掉单位并将结果保存到临时表;
2、通过substring_index按中划线切割得到数字
字符串我是用变量临时存储的,改成里表中的字段名即可

set @var="1-1.2万/年"; 
set @var="5-8千/月"; 
set @var="1.2-1.8万/月";

select substring_index(sal,"-",1) as first, substring_index(sal,"-",-1) as second from 
(select left(@var,LENGTH(@var) - 5) as sal) AS t_a;

执行结果:

img

img

有帮助的话,请点采纳该答案~

【以下回答由 GPT 生成】

解决方案:

我们可以使用MySQL的substring_index函数来提取薪资单位中的数字。该函数返回一个字符串中指定分隔符之前或之后的子字符串。

步骤如下:

  1. 首先,我们需要使用substring_index函数分别提取每个单位中的数字。假设薪资数据存储在表salary中的salary字段中。我们可以使用以下代码:
SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(salary, '-', -1), '万', 1) AS salary_min,
  SUBSTRING_INDEX(SUBSTRING_INDEX(salary, '-', 1), '万', -1) AS salary_max
FROM salary;
  1. 在上述代码中,我们首先使用SUBSTRING_INDEX(salary, '-', -1)从薪资单位中获取"-"之后的字符串,然后再使用SUBSTRING_INDEX(..., '万', 1)获取 "万" 之前的数字,即最小薪资。
  2. 类似地,我们使用SUBSTRING_INDEX(salary, '-', 1)和SUBSTRING_INDEX(..., '万', -1)来获取最大薪资。
  3. 在代码中,我们使用AS关键字为提取的数字命名,分别为salary_min和salary_max,以便清楚地标识最小薪资和最大薪资。

以上代码可以将薪资单位中的数字提取出来并分别存储在salary_min和salary_max列中。你可以根据需要进一步进行处理或分析这些数据。

补充说明:

如果薪资单位不仅仅是'万',还包括其他字符,你可以将SUBSTRING_INDEX函数的分隔符参数修改为其他字符,例如'/'、'-'等。

如果你发现substring_index函数提取的数字不正确,可能是因为薪资数据的格式不统一,你需要根据实际情况酌情修改提取的逻辑。

如果以上解决方案不能满足你的需求,请提供更详细的薪资数据格式,我将尽力提供更适合的解决方案。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^