在mysql中屏蔽整数字段

时间:2015-06-05 07:11:21

标签: mysql sql

我需要在mysql中屏蔽整数字段,使得9999911111变为9900001111.我想保留前2位数字和后4位数字,并且需要将其余数字标记为0,以便存储在字段中的整数。

我已经创建了一个查询并且它正在运行,但我不确定这是否是对整数执行的正确方法。

update table_name 
  set field_name=CONCAT(SUBSTR(field_name, 1, 2), 
                 REPEAT('0', CHAR_LENGTH(field_name) - 6), 
                 SUBSTR(field_name, CHAR_LENGTH(field_name)-3, CHAR_LENGTH(field_name)));

1 个答案:

答案 0 :(得分:1)

尝试不同的方法。

SET @myVar = 344553543534;
SELECT @myVar  - (SUBSTRING(@myVar, 4, LENGTH(@myVar) - 7) * 10000) ;

上述公式将给出344000003534作为结果。尝试不同的组合,发现它的工作。

因此,您的查询需要更改,如下所示

UPDATE table_name 
  SET field_name= 
 (field_name  - (SUBSTRING(field_name, 4, LENGTH(field_name) - 7) * 10000));

说明:

Consider Number, a =  344553543534;
Expected Result, b =  344000003534;

c = (a - b) = 344553543534 - 344000003534 = 553540000;

现在,如果你考虑结果,c,55354是需要屏蔽的数字,0000表示最后4个数字要打开。

因此,要获得屏蔽值,我们可以使用公式b = a - c;

现在要获得c,使用SUBSTRING(a, 4, LENGTH(a) - 7) * 10000

编辑:要仅保留前两个数字,请使用3而不是4和6而不是7.我假设您需要先保留第3个。

SET @myVar = 344553543534;
SELECT @myVar  - (SUBSTRING(@myVar, 3, LENGTH(@myVar) - 6) * 10000) ;