Étant donné une colonne d’adresse électronique, je dois trouver la position du signe @ pour la sous-chaîne.
Qu'est-ce que la fonction indexof
, pour les chaînes dans T-SQL?
Vous recherchez quelque chose qui retourne la position d'une sous-chaîne dans une chaîne.
en C #
var s = "abcde";
s.IndexOf('c'); // yields 2
CHARINDEX est ce que vous recherchez
select CHARINDEX('@', '[email protected]')
-----------
8
(1 row(s) affected)
-ou-
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
Un très petit nit à choisir:
La RFC pour les adresses e-mail permet à la première partie d'inclure un signe "@" si elle est citée. Exemple:
"john@work"@myemployer.com
Ceci est assez rare, mais pourrait arriver. Théoriquement, vous devriez scinder le symbole last "@", pas le premier:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
Plus d'information:
Je crois que vous voulez utiliser CHARINDEX
. Vous pouvez lire à ce sujet ici .