IndexOf function in T-SQL
dado uma coluna de endereço de E-mail, preciso de encontrar a posição do sinal @ para substringir.
Qual é a função indexof
, para cadeias de caracteres em T-SQL?
à procura de algo que devolva a posição de uma substring dentro de uma string.
Em C#
var s = "abcde";
s.IndexOf('c'); // yields 2
159
Author: BoffinbraiN, 2009-12-08
4 answers
CHARINDEX é o que procura
select CHARINDEX('@', '[email protected]')
-----------
8
(1 row(s) affected)
- ou -
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
235
Author: Scott Ivey, 2012-10-02 16:24:00
60
Author: OMG Ponies, 2009-12-08 20:06:31
Um nit muito pequeno para escolher:
O RFC para endereços de E-mail permite que a primeira parte inclua um sinal "@" se for citado. Exemplo:
"john@work"@myemployer.com
Isto é pouco comum, mas pode acontecer. Teoricamente, você deve dividir no último "@" símbolo, não o primeiro:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
Mais informações:
32
Author: richardtallent, 2009-12-08 20:27:27
Acho que queres usar CHARINDEX
. Você pode ler sobre isso aqui.
11
Author: Justin Swartsel, 2009-12-08 20:04:24