我正在嘗試在我的網站中實現類似功能,並希望顯示如下所示的電子郵件。在SQL查詢中用'*'替換電子郵件地址中的某些字符
下面是MySQL的代碼我已經寫了,它是爲我所測試的情況下工作正常。但是想和你們覈對一下我們是否有更好的解決方案。
SELECT CONCAT(RPAD(CONCAT(RPAD(firstletter, firstpartlength - 2, '*'),
beforedomain), (
secondpartlength - Length(afterdot) +
firstpartlength),
'*'), afterdot) hiddenemail
FROM (SELECT SUBSTRING(email, 1, 1) firstletter,
SUBSTRING(email, INSTR(email, '@') - 1, 3) beforedomain,
SUBSTR(SUBSTRING(email, INSTR(email, '@')),
INSTR(SUBSTRING(email,
INSTR(email, '@')), '.'))
afterdot,
LENGTH(SUBSTRING(email, 1, INSTR(email, '@') - 1))
firstpartlength,
LENGTH(SUBSTRING(email, INSTR(email, '@') + 1))
secondpartlength
FROM test_table) a
感謝您的幫助
問候 基蘭
我不知道您的實際情況,但實施服務器端腳本解決方案可能會更好。例如,如果您正在從PHP腳本執行此SQL,則PHP將成爲將電子郵件的部分更改爲星號的更好選擇。 – 2012-02-07 15:26:21
謝謝大衛。是的,這是真的。我正在使用PHP。任何已經可用的快速腳本?或者我可以自己寫一個... – Bujji 2012-02-07 15:31:07
考慮像[email protected]這樣的電子郵件 - 搜索最後一個點可能更合適。我會把這種格式留在代碼中,而不是個人數據庫中。 – voidengine 2012-02-07 15:31:46