Database-Recommendation

我正在使用 Amazon REDSHIIFT 並且想讓我的表數據不區分大小寫?

  • October 28, 2021

如何更改儲存在 REDSHIFT 中不區分大小寫的表數據?

例如:Bell, BELL,bell在查詢時應返回列中的所有行。

AFAIK,沒有辦法做到這一點。Redshift 不允許您設置特定的排序規則設置。要獲得 CI 行為,您必須始終將UPPER()LOWER()添加到所有查詢中。

從技術上講,您可以在載入過程中進行這些大小寫轉換,並讓應用程序層在適當的情況下處理顯示數據。但是,我建議您不要嘗試,除非您確定您的 DW 永遠不會有必須區分大小寫的數據集(即源 Y 與 y 具有不同的含義/值)或處理不同情況的應用程序不同。在這些情況下,您已經在不知情的情況下有效地破壞了數據。

Redshift 現在具有排序規則設置,以允許從 2021 年 6 月 24 日起不區分大小寫。需要注意的是,除非數據庫為空,否則您無法更改數據庫的排序規則設置(根據他們的大數據部落格上的這篇文章)。

數據庫創建範例:

CREATE DATABASE database_name [ WITH ]
[ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ]

表創建範例:

CREATE TABLE T (
 col1 Varchar(20) COLLATE case_insensitive
);

引用自:https://dba.stackexchange.com/questions/157477