最近有個需求,就是需要把一些敏感信息,如姓名,身份證號,手機號等涉及個人隱私的信息,以*號進行表示。我這裏使用的是SQL Server數據庫,不適合其他數據庫使用,但是思路一樣。
解決思路:辦法有很多,可以通過正則表達式、字符串截取、拼接的形式,我使用的是字符串截取、拼接的方式,比如身份證,我只需要截取它左邊4個字符,右邊2個字符,而中間的字符我用 * 進行拼接。我這裏用到了SQL Server自帶的兩個函數,這兩個函數跟MySQL的相同。
LEFT(str,len) 說明:從左邊開始截取字符串,str爲要截取的字符串,len爲要截取的字符串長度
RIGHT(str,len) 說明:從右邊開始截取字符串,str爲要截取的字符串,len爲要截取的字符串長度
SQL Server進行字符串的拼接直接使用“+”,這是SQL Server與其他數據庫其中一個不同的地方。以下是我一個SQL 查詢示例:
SELECT top 10 LEFT(customer_name, 1)+'**' AS name, LEFT(id_no, 4)+'****'+RIGHT(id_no, 2) AS no FROM customer
結果: