web-dev-qa-db-ja.com

DB2で同等のCHARINDEX

メールアドレスの列からドメインを選択しようとしています。

たとえば、次のような電子メールアドレスを持つテーブルemail_tableと列emailがあります。

[email protected]
[email protected]
[email protected]

期待される結果

gmail.com
yahoo.com
gmx.com

SQL Serverでは機能するがDB2では機能しないCHARINDEXで試したクエリは次のとおりです。

select CHARINDEX('@', email) from email_table
1
Bala

Db2(LUWの場合)V11.1以降では、REGEXP_EXTRACTを使用できます。

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0061492.html

例えば。

SELECT REGEXP_EXTRACT(c,'@(.*)$',1,1,'',1) 
FROM TABLE(
    VALUES
     ('[email protected]')
    ,('[email protected]')
    ,('[email protected]')
) AS t(c)

戻り値

1                
-----------------
gmail.com        
yahoo.com        
gmx.com          

  3 record(s) selected.
2
Paul Vernon

これはLOCATE(DB2の場合)で、SQL ServerのCHARINDEXと同等です。

ここ は、例を使用した完全な説明です。

ありがとう!

1
Rajesh Ranjan