У меня есть строка адресов электронной почты.Например, «a@a.com; b@a.com; c@a.com»
My database is:
record | flag1 | flag2 | emailaddresss
--------------------------------------------------------
1 | 0 | 0 | a@a.com
2 | 0 | 0 | b@a.com
3 | 0 | 0 | c@a.com
Что мне нужно сделать, это проанализировать строку, и если адрес отсутствует в базе данных, добавьте его.
Затем верните строку, содержащую только номера записей, соответствующие адресам электронной почты.
Итак, если вызов сделан с "A@a.com; c @a.com; d@a.com ", рутин будет добавлять" d@a.com ", а затем возвращает" 1, 3,4 ", соответствующие записям, которые соответствуют адресам электронной почты.
Что ясейчас я вызываю базу данных один раз для каждого адреса электронной почты, чтобы найти ее и подтвердить, что она существует (добавляя, если она не существует), а затем повторяю их снова, чтобы получить адреса 1 на 1 из моего приложения powershell для сбора номеров записей.
Должен быть способ просто передать все адреса в SQL одновременно, верно?
У меня он работает в powershell .. но медленно ..
Мне бы хотелось получить ответ от SQL, как показано выше, только номер записи для каждого адреса электронной почты в одном ответе.То есть "1,2,4" и т. Д.
Мой код PowerShell:
$EmailList2 = $EmailList.split(";")
# lets get the ID # for each eamil address.
foreach($x in $EmailList2)
{
$data = exec-query "select Record from emailaddresses where emailAddress = @email" -parameter @{email=$x.trim()} -conn $connection
if ($($data.Tables.record) -gt 0)
{
$ResponseNumbers = $ResponseNumbers + "$($data.Tables.record), "
}
}
$ResponseNumbers = $($ResponseNumbers+"XX").replace(", XX","")
return $ResponseNumbers