Java 如何通过生成随机电子邮件地址。SQL Server中的存储过程或函数

Java 如何通过生成随机电子邮件地址。SQL Server中的存储过程或函数,java,sql-server,tsql,Java,Sql Server,Tsql,我是T-SQL的新手,我有一个要求,就是在SQL server中使用函数或存储过程生成数百万个唯一的随机假电子邮件ID 使用JAVA,我创建了一个程序,可以生成50个唯一的电子邮件ID(如下所述),但我希望在SQL server中使用相同的ID 您能帮助我如何使用T-SQL实现吗?任何帮助都将不胜感激 package com.ing.tdm; import java.util.ArrayList; import java.util.List; import java.util.Random;

我是T-SQL的新手,我有一个要求,就是在SQL server中使用函数或存储过程生成数百万个唯一的随机假电子邮件ID

使用JAVA,我创建了一个程序,可以生成50个唯一的电子邮件ID(如下所述),但我希望在SQL server中使用相同的ID

您能帮助我如何使用T-SQL实现吗?任何帮助都将不胜感激

package com.ing.tdm;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;

import org.apache.commons.lang3.RandomStringUtils;

public class EmailGenerator {

    public static String getEmailDomains(){
         String randomElement = "";
        String strOfEmailDomains = "aol.com, att.net, comcast.net, facebook.com, gmail.com, gmx.com, googlemail.com, google.com, hotmail.com, hotmail.co.uk, mac.com, me.com, mail.com, msn.com, live.com, sbcglobal.net, verizon.net, yahoo.com, yahoo.co.uk, email.com, fastmail.fm, games.com, gmx.net, hush.com, hushmail.com, icloud.com, iname.com, inbox.com, lavabit.com, love.com , outlook.com, pobox.com, protonmail.com, rocketmail.com, safe-mail.net, wow.com , ygm.com , ymail.com, zoho.com, yandex.com, bellsouth.net, charter.net, cox.net, earthlink.net, juno.com, btinternet.com, virginmedia.com, blueyonder.co.uk, freeserve.co.uk, live.co.uk, ntlworld.com, o2.co.uk, orange.net, sky.com, virgin.net, wanadoo.co.uk, bt.com, sina.com, sina.cn, qq.com, naver.com, hanmail.net, daum.net, nate.com, yahoo.co.jp, yahoo.co.kr, yahoo.co.id, yahoo.co.in, yahoo.com.sg, yahoo.com.ph, 163.com, 126.com, aliyun.com, foxmail.com, hotmail.fr, live.fr, laposte.net, yahoo.fr, wanadoo.fr, orange.fr, gmx.fr, sfr.fr, neuf.fr, free.fr, gmx.de, hotmail.de, live.de, online.de, t-online.de , web.de, yahoo.de, libero.it, virgilio.it, hotmail.it, aol.it, tiscali.it, alice.it, live.it, yahoo.it, email.it, tin.it, poste.it, teletu.it, mail.ru, rambler.ru, yandex.ru, ya.ru, list.ruhotmail.be, live.be, skynet.be, voo.be, tvcablenet.be, telenet.be, hotmail.com.ar, live.com.ar, yahoo.com.ar, fibertel.com.ar, speedy.com.ar, arnet.com.ar, yahoo.com.mx, live.com.mx, hotmail.es,yahoo.com.ar, fibertel.com.ar, speedy.com.ar, arnet.com.ar, yahoo.com.mx, live.com.mx, hotmail.es, hotmail.com.mx, prodigy.net.mx, yahoo.com.br, hotmail.com.br, outlook.com.br, uol.com.br, bol.com.br, terra.com.br, ig.com.br, itelefonica.com.br, r7.com, zipmail.com.br, globo.com, globomail.com, oi.com.br";
        StringTokenizer st = new StringTokenizer(strOfEmailDomains, ",");
        Random rand = new Random();

        List<String> givenList = new ArrayList<String>();

        while(st.hasMoreElements()){
            String emaildomain = (String) st.nextElement();
            givenList.add(emaildomain);
        }

        if(null!=givenList && givenList.size() > 0){
            int randomIndex = rand.nextInt(givenList.size());
              randomElement = givenList.get(randomIndex);
        }

        return randomElement;

    }


public static String generateRandomEmail(int length) {
    String emailId = "";
    String allowedChars = "abcdefghijklmnopqrstuvwxyz" + "1234567890";
    String allowedSpecialChars = "_-.";

    String temp = RandomStringUtils.random(length, allowedChars);
    emailId = (temp.substring(0, temp.length() - 9)
            +Character.toString((RandomStringUtils.random(length, allowedSpecialChars)).charAt(0))
            +temp.substring(12, 18)
            +"@"+getEmailDomains()).replaceAll("\\s","");

    System.out.println(emailId);
    return emailId;
}

public static void main(String[] args) {
    for (int i = 0; i < 50; i++) {
        generateRandomEmail(20);
    }
}
package com.ing.tdm;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
导入java.util.StringTokenizer;
导入org.apache.commons.lang3.RandomStringUtils;
公共类电子邮件生成器{
公共静态字符串getEmailDomains(){
字符串元素=”;
字符串strofMailDomains="aol.com,att.net,comcast.net,facebook.com,gmail.com,gmx.com,googlemail.com,google.com,hotmail.com,hotmail.co.uk,mac.com,me.com,mail.com,msn.com,live.com,sbcglobal.net,verizon.net,yahoo.co.uk,email.com,fastmail.fm,games.com,gmx.net,hush.com,hushmail.com,icloud.com,iname.com,inbox.com,lavabit.com,love.com,outl.comook.com,pobox.com,protonmail.com,rocketmail.com,safe-mail.net,wow.com,ygm.com,ymail.com,zoho.com,yandex.com,bellsouth.net,charter.net,cox.net,earthlink.net,juno.com,btinternet.com,virginmedia.com,blueyonder.co.uk,freeserve.co.uk,live.co.uk,ntlworld.com,o2.co.uk,orange.net,sky.com,virgin.net,wanadoo.co.uk.uk,bt.com,新浪网m、 新浪网、qq.com、naver.com、hanmail.net、daum.net、nate.com、yahoo.co.jp、yahoo.co.kr、yahoo.co.id、yahoo.co.in、yahoo.com.sg、yahoo.com.ph、163.com、126.com、aliyun.com、foxmail.com、hotmail.fr、live.fr、laposte.net、yahoo.fr.fr.fr、wanadoo.fr、orange.fr、gmx.fr、sfr.fr、neuf.fr.fr、free.fr、free.fr.fr、gmx.de、gmx.de、hotmail.de、live.de、online、Webde、,yahoo.de、libero.it、virgilio.it、hotmail.it、aol.it、tiscali.it、alice.it、live.it、yahoo.it、email.it、tin.it、poste.it、teletu.it、mail.ru、rambler.ru、yandex.ru、ya.ru、list.ruhotmail.be、live.be、skynet.be、voo.be、tvcablenet.be、telenet.be、hotmail.com.ar、live.com.ar、live.com.ar、yahoo.com.ar、Fiberteltel.com.ar、speedy.com.ar、arnet.com.mxar,live.com.mx,hotmail.es,yahoo.com.ar,fibertel.com.ar,speedy.com.ar,arnet.com.ar,yahoo.com.mx,live.com.mx,hotmail.com.mx,prodigy.net.mx,yahoo.com.br,hotmail.com.br,outlook.com.br,uol.com.br,bol.com.br,terra.com.br,ig.com.br,itelefonica.com.br,r7.com,zipmail.com.br,globo.com,globoibr“;
StringTokenizer st=新的StringTokenizer(StrofMailDomains,“,”);
Random rand=新的Random();
List givenList=new ArrayList();
而(st.hasMoreElements()){
字符串emaildomain=(字符串)st.nextElement();
givenList.add(emaildomain);
}
if(null!=givenList&&givenList.size()>0){
int randomIndex=rand.nextInt(givenList.size());
randomElement=givenList.get(随机索引);
}
返回随机元素;
}
公共静态字符串生成器电子邮件(整数长度){
字符串emailId=“”;
字符串allowedChars=“abcdefghijklmnopqrstuvwxyz”+“1234567890”;
字符串allowedSpecialChars=“-”;
字符串温度=RandomStringUtils.random(长度,允许字符);
emailId=(临时子字符串(0,临时长度()-9)
+Character.toString((RandomStringUtils.random(长度,允许特殊字符)).charAt(0))
+温度子串(12、18)
+“@”+getEmailDomains()).replaceAll(“\\s”,”);
System.out.println(emailId);
返回emailId;
}
公共静态void main(字符串[]args){
对于(int i=0;i<50;i++){
生成电子邮件(20);
}
}

}

如果您真的想使用SQL执行此操作,请尝试以下方法之一

DECLARE @randomString VARCHAR(255)
SELECT
  @randomString = CONVERT(VARCHAR(255), NEWID())
PRINT @randomString


如果您真的想使用SQL来执行此操作,请尝试以下方法之一

DECLARE @randomString VARCHAR(255)
SELECT
  @randomString = CONVERT(VARCHAR(255), NEWID())
PRINT @randomString


您可以使用
NEWID()
交叉连接
,以生成大量电子邮件地址。此方法一次生成30k多封电子邮件,直到达到或超过目标计数-大约需要1秒时间才能达到1019304个电子邮件地址(演示:)

DECLARE@targetCount INT=1000000
创建表#emailTableTemp(fakeEmail VARCHAR(100))
同时(从#emailTableTemp中选择计数(1)<@targetCount
开始
插入#emailTableTemp
选择CONCAT(t2.前缀,t1.电子邮件)作为fakeEmail FROM
(VALUES('aol.com'),('att.net'),('comcast.net'),('facebook.com'),('gmail.com'),('gmx.com'),('googlemail.com'),('hotmail.com'),('hotmail.co.uk'),('mac.com'),('me.com'),('mail.com'),('msn.com'),('live.com'),('sbcglobal.net'),('verizon.net'),('yahoo.com'),'uk,('yahoo.co.uk和'gmmail.com'),'fmail.com'),('fmail.com'),'fm等),('hush.com'),('hushmail.com'),('icloud.com'),('iname.com'),('inbox.com'),('lavabit.com'),('love.com'),('outlook.com'),('pobox.com'),('protonmail.com'),('rocketmail.com'),('safe-mail.net'),('wow.com'),('ygm.com'),('ymail.com'),('zoho.com'),('yandex.com'),('bellsouth.net'),('charter.net',('earthlo.com'),',('btinternet.com')、('virginmedia.com')、('blueyonder.co.uk')、('freeserve.co.uk')、('live.co.uk')、('ntlworld.com')、('o2.co.uk')、('orange.net')、('sky.com')、('virgin.net')、('wanadoo.co.uk)、('bt.com')、('sina.com')、('sina.cn')、('qq.com')、('naver.com')、('naver.yahoo.com')、('hanmail.net')、'daum.net')、'krid.co.)、',('雅虎.com.com,,('126.com,,('126.com,,('126.com,,('126.com,,('126.com,('阿里云.com,,('雅虎.com.co.co.co.in.),,,('雅虎.com.com.co.co.co.co.com.,,,('雅虎.雅虎.雅虎.com.com.com.com.com.com.com.,,,,,,,('雅虎.雅虎.雅虎.雅虎.雅虎.com.com.com.com.com.com.com.com.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co.co....,,,,,,,,,,,,,,,,,,,,,,,,,,,,(((自由,它是,('virgilio.it'),('hotmail.it'),('aol.it'),('tiscali.it'),('alice.it'),('live.it'),('yahoo.it'),('email.it'),('tin.it'),('teletu.it'),('mail.ru,('rambler.ru'),等等,
DECLARE @targetCount INT = 1000000

CREATE TABLE #emailTableTemp (fakeEmail VARCHAR(100))

WHILE (SELECT COUNT(1) FROM #emailTableTemp) < @targetCount
BEGIN
    INSERT INTO #emailTableTemp
    SELECT CONCAT(t2.prefix,t1.email) AS fakeEmail FROM 
    (VALUES ('aol.com'),('att.net'),('comcast.net'),('facebook.com'),('gmail.com'),('gmx.com'),('googlemail.com'),('google.com'),('hotmail.com'),('hotmail.co.uk'),('mac.com'),('me.com'),('mail.com'),('msn.com'),('live.com'),('sbcglobal.net'),('verizon.net'),('yahoo.com'),('yahoo.co.uk'),('email.com'),('fastmail.fm'),('games.com'),('gmx.net'),('hush.com'),('hushmail.com'),('icloud.com'),('iname.com'),('inbox.com'),('lavabit.com'),('love.com '),('outlook.com'),('pobox.com'),('protonmail.com'),('rocketmail.com'),('safe-mail.net'),('wow.com '),('ygm.com '),('ymail.com'),('zoho.com'),('yandex.com'),('bellsouth.net'),('charter.net'),('cox.net'),('earthlink.net'),('juno.com'),('btinternet.com'),('virginmedia.com'),('blueyonder.co.uk'),('freeserve.co.uk'),('live.co.uk'),('ntlworld.com'),('o2.co.uk'),('orange.net'),('sky.com'),('virgin.net'),('wanadoo.co.uk'),('bt.com'),('sina.com'),('sina.cn'),('qq.com'),('naver.com'),('hanmail.net'),('daum.net'),('nate.com'),('yahoo.co.jp'),('yahoo.co.kr'),('yahoo.co.id'),('yahoo.co.in'),('yahoo.com.sg'),('yahoo.com.ph'),('163.com'),('126.com'),('aliyun.com'),('foxmail.com'),('hotmail.fr'),('live.fr'),('laposte.net'),('yahoo.fr'),('wanadoo.fr'),('orange.fr'),('gmx.fr'),('sfr.fr'),('neuf.fr'),('free.fr'),('gmx.de'),('hotmail.de'),('live.de'),('online.de'),('t-online.de '),('web.de'),('yahoo.de'),('libero.it'),('virgilio.it'),('hotmail.it'),('aol.it'),('tiscali.it'),('alice.it'),('live.it'),('yahoo.it'),('email.it'),('tin.it'),('poste.it'),('teletu.it'),('mail.ru'),('rambler.ru'),('yandex.ru'),('ya.ru'),('list.ruhotmail.be'),('live.be'),('skynet.be'),('voo.be'),('tvcablenet.be'),('telenet.be'),('hotmail.com.ar'),('live.com.ar'),('yahoo.com.ar'),('fibertel.com.ar'),('speedy.com.ar'),('arnet.com.ar'),('yahoo.com.mx'),('live.com.mx'),('hotmail.es,yahoo.com.ar'),('fibertel.com.ar'),('speedy.com.ar'),('arnet.com.ar'),('yahoo.com.mx'),('live.com.mx'),('hotmail.es'),('hotmail.com.mx'),('prodigy.net.mx'),('yahoo.com.br'),('hotmail.com.br'),('outlook.com.br'),('uol.com.br'),('bol.com.br'),('terra.com.br'),('ig.com.br'),('itelefonica.com.br'),('r7.com'),('zipmail.com.br'),('globo.com'),('globomail.com'),('oi.com.br')) t1(email)
    CROSS JOIN (VALUES 
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),        
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),        
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),        
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),
        (CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@')),(CONCAT(REPLACE(CONVERT(VARCHAR(50), NEWID()),'-',''),'@'))
        ) t2(prefix)
END

SELECT COUNT(1) FROM #emailTableTemp
SELECT TOP 10 * FROM #emailTableTemp ORDER BY fakeEmail

DROP TABLE #emailTableTemp
--setup emailDomain table
if OBJECT_ID('tempdb..#emailDomain') is not NULL
    drop table #emailDomain

create table #emailDomain (
    id int IDENTITY(1,1) PRIMARY KEY,
    domain varchar(50) not null
)

insert into #emailDomain
--id is automatic generated
values('aol.com')
     ,('att.net')
     ,('comcast.net')
     ,('facebook.com')
     ,('gmail.com')
     ,('gmx.com')

--setup allowedChar table
if OBJECT_ID('tempdb..#allowedChar') is not NULL
    drop table #allowedChar

create table #allowedChar(
    id int IDENTITY(1,1) PRIMARY KEY,
    aChar char(1) not null
)

insert into #allowedChar
values('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h'),('i'),('j'),('k'),('l'),('m'),('n'),('o'),('p'),('q')
,('r'),('s'),('t'),('u'),('v'),('w'),('x'),('y'),('z'),('1'),('2'),('3'),('4'),('5'),('6'),('9'),('7'),('0'),('8')

--setup allowedSpecialChar table
if OBJECT_ID('tempdb..#allowedSpecialChar') is not NULL
    drop table #allowedSpecialChar

create table #allowedSpecialChar(
    id int IDENTITY(1,1) PRIMARY KEY,
    asChar char(1)
)

insert into #allowedSpecialChar
VALUES('_'),('-'),('.')

declare @countDomains as int = (select count(*) from #emailDomain)
declare @countallowedChars as int = (select count(*) from #allowedChar)
declare @countallowedSpecialChars as int = (select count(*) from #allowedSpecialChar);

if OBJECT_ID('tempdb..#rowsWithRandomCharsNrs') is not NULL
    drop table #rowsWithRandomCharsNrs;

--generate with recursion 50 rows, with an id and a random length for the e-mail address
with 
baseRowsWithEmailLength as (
    select 1 as idMail, round(RAND(CHECKSUM(NEWID())) * 60 + 1,0) as strLength
    union all
    select idMail + 1 as idMail, round(RAND(CHECKSUM(NEWID())) * 60 + 1,0) as strLength
    from baseRowsWithEmailLength 
    where idMail < 50
)
--generate with recursion a random number (indexChar) for every char in the string, which is an id to join with the table allowedChar
,rowsWithRandomCharsNrs as(
    select idMail, strLength, 1 as idchar,  round(RAND(CHECKSUM(NEWID())) * (@countallowedChars-1) +1,0) as indexChar
    from baseRowsWithEmailLength
    union all
    select idMail, strLength, idchar + 1 as idchar,  round(RAND(CHECKSUM(NEWID())) *(@countallowedChars-1) +1,0) as indexChar
    from rowsWithRandomCharsNrs
    where idchar < strLength
)


select *
into #rowsWithRandomCharsNrs
from rowsWithRandomCharsNrs


SELECT idMail  
      ,concat(left(mailRandStr, firstMailPartLength),aspc.asChar,RIGHT(mailRandStr, StrLength - firstMailPartLength), '@', ed.domain) as Mail
FROM(
    SELECT idMail
          ,strLength
          ,firstMailPartLength
          ,mailRandStr
          --generate a random number to join a random Domain and specialchar
          ,round(RAND(CHECKSUM(NEWID())) * (@countDomains-1) +1,0) as idDomain
          ,round(RAND(CHECKSUM(NEWID())) * (@countallowedSpecialChars-1) +1,0) as idSpecialChar
    FROM (
        SELECT DISTINCT
               idMail
              ,StrLength
              ,round(StrLength * 0.75,0) as firstMailPartLength 
              --concat all chars to a single string via for xml path
              ,(
                 select ''+ac.aChar
                 from #rowsWithRandomCharsNrs sub
                 join #allowedChar ac on sub.indexChar = ac.id
                 where sub.idMail = m.idMail
                 FOR XML PATH('')
              )as mailRandStr
        FROM #rowsWithRandomCharsNrs m
    ) sub
)sub
left join #emailDomain ed on sub.idDomain = ed.id
left join #allowedSpecialChar aspc on sub.idSpecialChar  = aspc.id