T-SQLのIndexOf関数


168

電子メールアドレス列を指定すると、部分文字列の@記号の位置を見つける必要があります。

indexofT-SQLの文字列の関数は何ですか?

文字列内の部分文字列の位置を返すものを探します。

C#で

var s = "abcde";
s.IndexOf('c'); // yields 2

回答:


248

CHARINDEXはあなたが探しているものです

select CHARINDEX('@', 'someone@somewhere.com')
-----------
8

(1 row(s) affected)

-または-

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

(1 row(s) affected)

67

CHARINDEXまたはPATINDEXのいずれかを使用して、文字列内の指定された式の開始位置を返すことができます。

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

どちらかの側のPATINDEXでワイルドカードを使用する必要があることに注意してください。


35

選択する非常に小さなニット:

電子メールアドレスのRFCでは、引用符で囲まれている場合、最初の部分に「@」記号を含めることができます。例:

"john@work"@myemployer.com

これは非常にまれですが、発生する可能性があります。理論的には、最初ではなく最後の「@」記号で分割する必要があります。

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

詳しくは:

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


これらは、データベースで特定して修正しようとしていることです。主に人々は自分のドメイン名を間違ってタイプするだけです。ほとんどのWebリダイレクトは実際のWebリダイレクトに戻りますが、MXレコードは転送されず、それらを表示するのは厄介です
DevelopingChris

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.