2015-06-05 121 views
2

我需要屏蔽mysql中的整數字段,使9999911111變成9900001111.我想保留前兩位數字和最後四位數字,並且需要將保留在字段中的整數的其餘數字標記爲0 。mysql中的掩碼整數字段

我已經創建了一個查詢,它的工作,但我不知道這是否是正確的方法來做整數或不。

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

和那個查詢爲你做了什麼? –

+0

這工作正常。但我不知道這是否是整數域的正確方法。 – Anuj

+0

mysql會高興地把你的整數看作一個字符串,所以是的,我沒有看到任何理由做任何不同的事情 –

回答

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;如果要獲得蒙面值,可以使用公式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) ;