Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Ricavare Email criptate
lunedì 09 novembre 2009 - 09.42
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sergino
Profilo
| Newbie
44
messaggi | Data Invio:
lun 9 nov 2009 - 09:42
ciao a tutti,
dal mio db (su sql 2005) devo ricavare gli indirizzi email criptati secondo delle logiche
Questa è l'istruzione SQL:
select mail_ASCII, checksum(mail_ASCII) as checksum_mail
, patindex ('%@%',
mail_ASCII ) as chiocciola_, patindex ('%.%', mail_ASCII ) as pto_
from
(select cast(rtrim(ltrim(upper(mail))) as varchar(250)) as mail_ASCII from (
select mail from table as mail
) b ) v
la strada che sto segunedo è la seguente:
creo una variable table con all'interno gli indirizzi email che devo prendere in considerazione - e dopo di che dichiare il campo email come cursor e creo il floop (con FETCH) che analizza ogni singolo indirizzo email.
La query funziona - ma ci mette tantissimo.
Avete suggerimenti su come poterne creare una più performante?
grazie mille!
sergio
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 9 nov 2009 - 10:53
>dal mio db (su sql 2005) devo ricavare gli indirizzi email criptati
>secondo delle logiche
...
>la strada che sto segunedo è la seguente:
>
>creo una variable table con all'interno gli indirizzi email che
>devo prendere in considerazione - e dopo di che dichiare il campo
>email come cursor e creo il floop (con FETCH) che analizza ogni
>singolo indirizzo email.
Ciao Sergio,
Per quale motivo ti serve un cursore?
Puoi spiegare meglio cosa stai cercando di fare?
>grazie mille!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
sergino
Profilo
| Newbie
44
messaggi | Data Invio:
lun 9 nov 2009 - 11:14
ciao Lorenzo!
ho una tabella che si chiama useremail - e da questa tabella devo isolare degli indirizzi email che seguono un certo criterio, e per ogni indirizzo email estratto devo applicare l'algoritmo che ho riportato sopra:
select checksum(mail_ASCII) as checksum_mail, patindex ('%@%',
mail_ASCII ) as chicciola, patindex ('%.%', mail_ASCII ) as pto from
(select cast(rtrim(ltrim(upper(mail))) as varchar(250)) as mail_ASCII from (
select 'sergino.taglia@libero.it' as mail
) b ) v
Ho pensato di usare il cursore per far girare l'algoritmo su ogni indirizzo email che estratto nella variable table
il mio ouput finale dovrà essere composto da: indirizzo email e i tre campi criptati (mail_checksum, chiocchiola e punto)
ci sono soluzioni più snelle e veloci?
grazie mille!
sergio
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 9 nov 2009 - 11:27
>ho una tabella che si chiama useremail - e da questa tabella
>devo isolare degli indirizzi email che seguono un certo criterio,
>e per ogni indirizzo email estratto devo applicare l'algoritmo
>che ho riportato sopra:
Cosa intendi con "isolare"? Restituire?
>Ho pensato di usare il cursore per far girare l'algoritmo su
>ogni indirizzo email che estratto nella variable table
Non puoi restituire un resultset senza alcuna variabile table/cursore?
Cosa deve fare il client con questo resultset?
>grazie mille!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
sergino
Profilo
| Newbie
44
messaggi | Data Invio:
lun 9 nov 2009 - 11:34
Cosa intendi con "isolare"? Restituire?
Si, intendo restiturie
Non puoi restituire un resultset senza alcuna variabile table/cursore?
E' quello che non riesco a fare.
nella stringa per ricavare i valori criptati, come posso specificare quali sono gli indirizzi email che devo considerare?
>grazie mille!
sergio
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 9 nov 2009 - 11:39
>nella stringa per ricavare i valori criptati, come posso specificare
>quali sono gli indirizzi email che devo considerare?
Puoi preparare un esempio concreto sul quale ragionere, con la struttura della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO), ed il result set finale che vorresti ottenere a partire da quei dati?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
sergino
Profilo
| Newbie
44
messaggi | Data Invio:
lun 9 nov 2009 - 11:47
questo è quello che ho fatto
DECLARE @report TABLE
(
mail nvarchar (125),
checksum_mails int,
chiocciola int,
punto int
)
INSERT INTO @report (mail)
SELECT UE.u_email_string
FROM UserEmail UE
INNER JOIN UserObject UO on UE.u_user_id = UO.u_user_id
left outer join (select SoldToId as u_user_id,count(*) as UserPurchaseCount
FROM PurchaseOrders GROUP BY SoldToId) as PO on PO.u_user_id = UO.u_user_id
--where UE.b_email_active=1
--ORDER BY NEWID()
where PO.u_user_id is null
--SELECT *
--FROM @report
DECLARE @email nvarchar(125)
DECLARE catalogs_cursor CURSOR FOR
SELECT mail
FROM @report
OPEN catalogs_cursor
FETCH NEXT FROM catalogs_cursor
INTO @email
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @report
SET checksum_mails = checksum_mail,
chiocciola = chiocciola_,
punto = pto_
FROM
(
select mail_ASCII, checksum(mail_ASCII) as checksum_mail
, patindex ('%@%',
mail_ASCII ) as chiocciola_, patindex ('%.%', mail_ASCII ) as pto_
from
(select cast(rtrim(ltrim(upper(mail))) as varchar(250)) as mail_ASCII from (
select mail from @report as mail
) b ) v where mail_ASCII = @email
)
as fs
where mail = @email
FETCH NEXT FROM catalogs_cursor
INTO @email
END
CLOSE catalogs_cursor
DEALLOCATE catalogs_cursor
SELECT *
FROM @report
forse dici che può bastare (in base ha quello che mi hai scritto prima):
select checksum(mail_ASCII) as checksum_mail, patindex ('%@%',
mail_ASCII ) as chicciola, patindex ('%.%', mail_ASCII ) as pto from
(select cast(rtrim(ltrim(upper(mail))) as varchar(250)) as mail_ASCII from
(
SELECT UE.u_email_string as mail
FROM UserEmail UE
INNER JOIN UserObject UO on UE.u_user_id = UO.u_user_id
INNER join (select SoldToId as u_user_id,count(*) as UserPurchaseCount
FROM PurchaseOrders GROUP BY SoldToId) as PO on PO.u_user_id = UO.u_user_id
where UE.b_email_active=1
ORDER BY NEWID()
)
b ) v
sergio
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 9 nov 2009 - 11:49
>questo è quello che ho fatto
Si, ma ti ho chiesto un'altra cosa
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !