我需要在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)));
答案 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) ;