IndexOf-Funktion in T-SQL

168

Bei einer angegebenen E-Mail-Adressspalte muss ich die Position des @ -Zeichens für die Teilzeichenfolge ermitteln.

Was ist die indexofFunktion für Zeichenfolgen in T-SQL?

Suchen Sie nach etwas, das die Position eines Teilstrings innerhalb eines Strings zurückgibt.

in C #

var s = "abcde";
s.IndexOf('c'); // yields 2
Entwicklung von Chris
quelle

Antworten:

248

CHARINDEX ist das, wonach Sie suchen

select CHARINDEX('@', '[email protected]')
-----------
8

(1 row(s) affected)

-oder-

select CHARINDEX('c', 'abcde')
-----------
3

(1 row(s) affected)
Scott Ivey
quelle
67

Sie können entweder CHARINDEX oder PATINDEX verwenden , um die Startposition des angegebenen Ausdrucks in einer Zeichenfolge zurückzugeben.

CHARINDEX('bar', 'foobar') == 4
PATINDEX('%bar%', 'foobar') == 4

Beachten Sie, dass Sie die Platzhalter in PATINDEX auf beiden Seiten verwenden müssen.

OMG Ponys
quelle
35

Eine sehr kleine Auswahl:

Der RFC für E-Mail-Adressen ermöglicht es dem ersten Teil, ein "@" - Zeichen einzuschließen, wenn es in Anführungszeichen steht. Beispiel:

"john@work"@myemployer.com

Dies ist ziemlich ungewöhnlich, könnte aber passieren. Theoretisch sollten Sie das letzte "@" - Symbol teilen , nicht das erste:

SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1

Mehr Informationen:

http://en.wikipedia.org/wiki/Email_address

richardtallent
quelle
Dies sind die Dinge, die ich in unserer Datenbank ermitteln und beheben möchte. Hauptsächlich geben Leute ihren Domainnamen falsch ein. Die meisten Web-Weiterleitungen kehren zum echten zurück, aber die MX-Datensätze werden nicht weitergeleitet, und das Anzeigen wird umständlich
DevelopingChris
11

Ich glaube du willst es benutzen CHARINDEX. Sie können darüber lesen Sie hier .

Justin Swartsel
quelle