3

特定の文字の後の文字をどのように数えますか。私はOracleを初めて使用し、かなりのことを学びましたが、現時点では困惑しています. 部分文字列を取得する関数と、文字列の長さを取得する関数をいくつか見つけました。メールアドレス myemail@thedomain.com を調べています。「。」以降の長さを確認したい メールで。

SELECT email
FROM user_table
WHERE length(substr(email, /*what values*/, /*to put here*/))

最後の「。」の場所を実際に見つけることができるかどうかはわかりません。メール文字列に?

4

2 に答える 2

3

を使用するかどうかわかりませんsubstr。次のようなものを試すことができます:

select length('abcd@efgh.123.4567') - instr('abcd@efgh.123.4567', '.', -1) from dual

instr(..,..,-1)最後の文字から後方検索を使用して位置を見つけます。

于 2012-06-11T20:23:51.207 に答える
2

チェックを行っているので、 REGEXP_INSTRを使用して正規表現でフォーマットを検証することをお勧めします。たとえば、このサイトで見つけた電子メール検証はREGEXP_INSTR(email, '\w+@\w+(\.\w+)+') > 0

自分で確認したわけではありませんが、問題ないようです。

乾杯。

于 2012-06-11T20:54:32.073 に答える