J'ai une table nommée employée dans ma base de données, la structure est indiquée ci-dessous: J'ai des données que je veux masquer, par exemple J'ai réussi à le faire pour le nom et le téléphone: p> Comment puis-je faire cela pour email? p> p> +7845690001 Code> to
+7845690 *** code>. Version complète comme ci-dessous. P>
4 Réponses :
Vous pouvez utiliser SELECT CONCAT(LEFT(`name `,1),LPAD(RIGHT(`name `,1),LENGTH(`name `)-1,'*')) FROM `test4`
Ca ne fonctionne pas. Je veux exact * pour le caractère. Jonney = j **** y, comme ça.
Il a changé en fonction de votre exigence.
N'utilisez pas le même caractère * par votre nom, il fournit des informations à votre lecteur. Utilisez un caractère fixe * comme une autre application préoccupée par la sécurité.
Oui, je comprends mais je veux exactement même. :)
@ user14059282 J'ai édité la réponse pour le nombre exact de * au lieu de caractères. Mais faites attention à cette méthode peut donner des informations aux pirates.
Vous pouvez travailler avec les fonctions de chaîne de MySQL: Je vais le faire pour gauche () code>,
droite () code>,
longueur () code>,
répéter () code> et
substrant_index () code>.
email code>: p>
a finalement trouvé la réponse:
Select CONCAT(MID(phone, 1, LENGTH(phone) - 3), '***') as new_phone, CONCAT(LEFT(name,1),REPEAT("*",LENGTH(name)-2),RIGHT(name,1)) as new_name,CONCAT(CONCAT(left(email,1),REPEAT("*",LENGTH(SUBSTRING_INDEX(email, "@", 1))-2),RIGHT(SUBSTRING_INDEX(email, "@", 1),1)),'@',SUBSTRING_INDEX(email,'@',-1)) as new_email from employee
Une regexp_replace peut aussi faire le tour. Voici comment le faire pour l'email fort>: explication: p> (?! ^) Nous assurons que le caractère correspondant est Pas au début de la chaîne et de cette façon, nous ignorons le premier caractère. P> . Correspond au personnage à remplacer P> (? = [^ @] + @) Nous nous arrêterons à une séquence qui est n'importe quel caractère qui n'est pas @, puis suivi de @. P> Chaque caractère qui est assorti entre les deux sera ensuite remplacé par un * (le troisième paramètre) par la fonction. P> pour le numéro de téléphone strong> Je vais montrer une solution beaucoup plus simple : p> [0-9] {3} correspond exactement à trois chiffres p> $ dit qu'ils doivent être à la fin de la chaîne. p> Nous les remplacons ensuite avec trois étoiles. Veuillez noter que cette solution suppose que vous stockez toujours les numéros de téléphone d'une manière qu'ils se terminent toujours par trois chiffres. Donc, par exemple, si je saisis un téléphone comme "555-55-55-55", rien ne sera masqué. Si vous n'entrez pas toujours toujours les téléphones normalisés dans le même format, vous devez penser à quelque chose de plus compliqué (comme récupération de chiffres - récupération zéro ou plus non chiffres - récupération du chiffre - récupération zéro ou plus non chiffres - Fetch Digit - Fin de la chaîne , puis remplacez tout ce qui est apparié avec trois * -s). Comme ceci: p> ici [0-9] signifie un seul chiffre et [^ 0-9] * signifie zéro ou plus de chiffres. Et bien sûr, la même chose peut être simplifiée en regroupant le chiffre et le zéro ou plus de chiffres dans un groupe qui est ensuite répété trois fois trois fois: p> et pour le nom strong>, nous pouvons effectuer ce qui suit: p> encore une fois, nous ignorons le premier caractère que de correspondre et remplacez tous les caractères jusqu'à ce que le dernier caractère de la String. P> Important: Dans les exemples ci-dessus, nous préservons la longueur des cordes. Si vous souhaitez une anonymie plus élevée, vous pouvez récupérer les données en groupes, puis remplacer un groupe souhaité avec un seul *. Par exemple pour l'e-mail: p> Ceci remplacera john@gmail.dom à j*n@gmail.dom et margareth@gmail.dom to m * h @ gmail.dom. Donc, il a également masqué la longueur. Explication: P> ^ est le début de la chaîne p> (.) Est notre premier groupe. Il est un caractère unique p> (.) + Est le deuxième groupe. C'est un ou plusieurs caractères. P> ([^ @] @. +) Est notre troisième groupe. C'est un seul caractère qui n'est pas @, suivi de @, puis suivi d'un ou plusieurs caractères (n'importe où). P> Nous remplaçons cela avec \ 1 (le premier groupe), suivi d'un seul *, suivi de \ 3 (le troisième groupe). P> p>
J'ai atteint un téléphone en utilisant ceci. Concat (milieu (téléphone, 1, longueur (téléphone) - 3), '***') comme téléphone_new
"J'ai besoin" n'est pas une question. Modifier Votre message Ajoutez ce que vous avez essayé et une explication Qu'est-ce qui s'est mal passé avec elle et où exactement vous avez besoin d'aide.
@sticky Bit, j'ai ajouté ce que je l'ai essayé en commentaire. Vérifiez s'il vous plaît.
MySQL version 8 a regex_replace (), mais les versions antérieures ne le font pas. Quelle version utilise-tu? S'il vous plaît Modifier Votre question vous permet de savoir.