here で説明されているように、キーイングにvarcharを使用しないことの利点を理解し始めています
varchar キー フィールドを持つ大きなテーブル (20M 行以上) を持つ、セットアップしていない DB2 データベースを使用しています。テーブル構造は次のとおりです。
key_field | matching_field1
000-XXX | 123
0000-XXX | 456
00-XXXXX | 789
はkey_field
可変長です。key_field
を使用して、4k 行の小さなテーブルにリンクしようとしています。問題は、 の文字の後に末尾のスペースがあることですkey_field
。を使用して特定の文字列を検索すると、これを知っています
SELECT * WHERE key_field LIKE '000-XXX'
一致するものはありませんが、試してみると'000-XXX%'
行が選択されます。これは、対応するkey_field
が含まれているがトリミングされているため、末尾の空白がない2番目のテーブルにキーを設定できないのと同じ理由だと思います。
この大きなテーブルを編集、複製、または転置できないと仮定すると (リソースの制限により、少なくとも一括ではない)、同じものを含む小さなテーブル (4k 行) にキーを設定する方法はありkey_field
ますか?
小さいテーブルを編集および操作できます。
更新: を使用して以下のクエリを実行するRTRIM
と、エラーが発生します。
クエリ:
SELECT RTRIM(foreign_key)
FROM Small_Table
EXCEPT SELECT RTRIM(key_field)
FROM Big_Table
エラー:
NUMBER OF ROWS DISPLAYED IS 0
SQLCODE = -904, ERROR: UNSUCCESSFUL EXECUTION CAUSED BY AN
UNAVAILABLE RESOURCE. REASON 00C90084, TYPE OF RESOURCE 00000100, AND
RESOURCE NAME DB2-MANAGED SPACE WITHOUT SECONDARY ALLOCATION OR
USER-MANAGED SPACE IN MYDB_NAME