Domanda

Un tavolo ha "John Doe <jdoe@aol.com>", mentre un altro ha "jdoe@aol.com". C'è un'UDF o metodo alternativo che ti corrisponde all'indirizzo di posta elettronica dal primo campo contro il secondo campo?

Questo non sta andando essere il codice di produzione, ho solo bisogno che per l'esecuzione di un'analisi ad hoc. E 'un peccato che il DB non memorizza due indirizzi e-mail amichevole e non amichevoli.

Aggiornamento:. Corretta la formattazione, dovrebbe essere < e > sul primo

È stato utile?

Soluzione

Si potrebbe fare un join con il metodo LOCATE, qualcosa di simile ...

 SELECT * FROM table1 JOIN table2 ON (LOCATE(table2.real_email, table1.friend_email) > 0) 

Altri suggerimenti

Vorrei dividere gli indirizzi e-mail l'ultimo spazio-questo dovrebbe dare l'indirizzo di posta elettronica. Il codice esatto dipenderà il database, ma alcuni pseudocodice approssimativa:

email = row.email
parts = email.split(" ")
real_email = parts[ len(parts) - 1 ]

Si dovrebbe essere in grado di utilizzare la parola chiave LIKE a seconda di come costante il modello è per gli indirizzi email "amichevoli".

SELECT
     T1.nonfriendly_email_address,
     T2.friendly_email_address
FROM
     My_Table T1
INNER JOIN My_Table T2 ON
     T2.friendly_email_address LIKE '%<' + T1.nonfriendly_email_address + '>'

Forse il seguente codice TSQL può aiutare a:

DECLARE @email varchar(200)
SELECT @email = 'John Doe jdoe@aol.com'

SELECT REVERSE(SUBSTRING(REVERSE(@email), 0,CHARINDEX(' ', REVERSE(@email))))

Questa affermazione ritorna:

jdoe@aol.com

Parlando attraverso la logica:

  1. Invertire la colonna di posta elettronica
  2. Trova l'indice del primo '' carattere ... tutto fino a questo punto è il tuo indirizzo e-mail reale
  3. Substring la colonna, fin dall'inizio della stringa (invertita), l'indice trovato alla fase 2.
  4. Invertire di nuovo la stringa, mettendolo nel giusto ordine.

Ci potrebbero essere modi più eleganti per farlo, ma che avrebbe funzionato, e quindi si potrebbe usare per un lato del vostro JOIN. Funziona perché indirizzi e-mail non possono contenere spazi, in modo da quindi l'ultimo spazio (o prima, quando si inverte esso) sarà il separatore tra il tuo indirizzo e-mail reale, ed una amichevole. Per quanto ne so TSQL non contiene una funzione LastIndexOf (), che sarebbe stato utile per evitare la doppia inversa () chiamate di funzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top