1. ホーム
  2. sql

[解決済み] DB2 の select クエリに '-' デリミターより前の文字列を含める書き方

2022-02-14 12:39:09

質問事項

テーブルのquot;College"にカラムquot;Department"を持っています。学科は次のようなデータを持っています。

Commerce1-683877
Science2-678900

私はCommerce1とScience2だけを返すselectクエリを書く必要があります。

私はDB2の全くの初心者です、これを解決するために私を助けてください。

select substring(department,0,CHARINDEX('-',department) as DEPT from College 

Edit -1 : ありがとう @Charles

私はあなたの解決策を試してみました。
select substring(department , 1, LOCATE('-',department) - 1) AS DEPT from College

しかし、それは私にエラーを投げている:

SQL Error [42815]: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 3 OF SUBSTRING IS INVALID. SQLCODE=-171, SQLSTATE=42815, DRIVER=4.9.78

Edit 2: 確かに @Charles の言うとおり、私の行はすべて '-' を含んでいません。 以下のクエリも使ってみましたが、同じエラーが発生しました。

select substring(department,1, LOCATE('-',department || '-') - 1) as DEPT from College

解決方法は?

Db2のプラットフォームとバージョンは?

適切なDb2 SQLリファレンスマニュアルを探しましたか?

Db2 SQL の文字列 & 配列は 0 ではなく、1 から始まることに注意してください。

select substring(department,1, LOCATE('-',department) - 1) as DEPT from College