SQLを使用して、CHAR(30)フィールドの右端から2ワードを取得するにはどうすればよいですか?charのDB2フィールドの右2ワードの取得
namefield = "私の名前はビル・スミスです"
結果=ビル・スミス
SQLを使用して、CHAR(30)フィールドの右端から2ワードを取得するにはどうすればよいですか?charのDB2フィールドの右2ワードの取得
namefield = "私の名前はビル・スミスです"
結果=ビル・スミス
これは未テストですが、多分何か:
SELECT REVERSE(SUBSTRING(REVERSE(namefield) , 0, CHARINDEX(' ', REVERSE(namefield), CHARINDEX(' ', REVERSE(namefield), 0)+1))) FROM TABLE
は、あなたのテーブルとテーブルを交換してください。それが動作するかどうか私に教えてください!
[IBM] [システムiアクセスODBCドライバー] [DB2 for i5/OS] SQL0204 - * LIBLタイプの反転* Nが見つかりません。 – macunte
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私は上記の私のテストコードが含まれている - あなたは、私はその行のコメントを削除することで、様々な部品をテストする方法を見ることができます。このテクニックはあなたのテストに役立ちます。
実行中のDB2のプラットフォーム/バージョンはどれですか? –
DB2/400 SQL v 07.02.0015 – macunte