2017-01-31 4 views
0

SQLを使用して、CHAR(30)フィールドの右端から2ワードを取得するにはどうすればよいですか?charのDB2フィールドの右2ワードの取得

namefield = "私の名前はビル・スミスです"

結果=ビル・スミス

+0

実行中のDB2のプラットフォーム/バージョンはどれですか? –

+0

DB2/400 SQL v 07.02.0015 – macunte

答えて

0

これは未テストですが、多分何か:

SELECT REVERSE(SUBSTRING(REVERSE(namefield) , 0, CHARINDEX(' ', REVERSE(namefield), CHARINDEX(' ', REVERSE(namefield), 0)+1))) FROM TABLE 

は、あなたのテーブルとテーブルを交換してください。それが動作するかどうか私に教えてください!

+0

[IBM] [システムiアクセスODBCドライバー] [DB2 for i5/OS] SQL0204 - * LIBLタイプの反転* Nが見つかりません。 – macunte

0

LOCATE_IN_STRINGを使用する場合は、-Xと言って後方を検索することができます。ただ楽しみにしているcharindexに。

select 
-- locate_in_string(str,' ',-1), 
-- substr(str,1,locate_in_string(str,' ',-1)-1), 
-- length(str) - locate_in_string(str,' ',-1), 
-- locate_in_string(str,' ',-7), 
-- locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2), 
-- substr(str,1,11) || '<-', 
-- substr(str,1,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2)-1), 
    substr(str,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2)) 
FROM (
    VALUES('My name is Bill Smith') 
) AS T(str) 

ここでは、最後のスペースのポイントから始めて、前のスペースを検索し、それをsubstrに渡します。

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0054098.html私は上記の私のテストコードが含まれている - あなたは、私はその行のコメントを削除することで、様々な部品をテストする方法を見ることができます。このテクニックはあなたのテストに役立ちます。

関連する問題