比較字串資料
字串比較是由 Integration Services 執行之許多轉換中的重要部分,此外在評估變數的運算式和屬性運算式時也會使用字串比較。 例如,「排序」轉換會比較資料集中的值,並以遞增或遞減的順序對資料進行排序。
設定字串比較的轉換
您可以自訂「排序」、「彙總」、「模糊群組」和「模糊查閱」轉換,以變更在資料行層級比較字串的方式。 例如,您可以指定比較忽略大小寫,這表示大寫和小寫字元都會被視為相同的字元。
下列轉換使用可包含字串比較的運算式。
「條件式分割」轉換可使用運算式中的字串比較,以決定將資料列傳送到哪個輸出。 如需詳細資訊,請參閱<條件式分割轉換>。
「衍生的資料行」轉換可使用運算式中的字串比較,以產生新的資料行值。 如需詳細資訊,請參閱<衍生的資料行轉換>。
變數、變數對應和優先順序條件約束也使用運算式,它們可以包含字串比較。 如需有關運算式的詳細資訊,請參閱<Integration Services (SSIS) 運算式>。
在字串比較期間處理
視轉換的資料和組態而定,比較字串資料的過程中可能會進行下列處理:
將資料轉換成 Unicode。 如果來源資料還不是 Unicode,則比較發生之前資料會自動轉換成 Unicode。
使用地區設定來套用用於解譯日期、時間、十進位資料之地區設定特定的規則和排序次序。
在資料行層級套用比較選項來變更比較的敏感性。
將字串資料轉換成 Unicode
視轉換執行的作業及轉換組態而定,可以將字串資料轉換為 DT_WSTR 資料類型,這是字串字元的 Unicode 表示法。
具有 DT_STR 資料類型的字串資料,會使用資料行的字碼頁來轉換成 Unicode。 Integration Services 支援資料行層級的字碼頁,而每個資料行都可以用不同的字碼頁來轉換。
在大多數情況下,Integration Services 可識別資料來源中的正確字碼頁。 例如,在 SQL Server 中,您可在資料庫和資料行層級設定定序。 字碼頁從 SQL Server 定序 (可以是 Windows 或 SQL 定序) 衍生。
如果 Integration Services 提供一個非預期的字碼頁,或者封裝使用未提供足夠資訊來判斷字碼頁是否正確的提供者來存取資料,則您可以在 OLE DB 來源和 OLE DB 目的地中指定預設字碼頁。 此預設字碼頁會取代 Integration Services 提供的字碼頁。
檔案不包含字碼頁。 但是,封裝用來連接到檔案資料的「一般檔案」和「多個一般檔案」連接管理員,會包含用來指定該檔案字碼頁的屬性。 字碼頁只能在檔案層級,而不能在資料行層級進行設定。
設定地區設定
Integration Services 不會使用字碼頁來推斷用於排序資料或解譯日期、時間和十進位資料之地區設定的特定規則。 反之,轉換會讀取資料流程元件、「資料流程」工作、容器或封裝上 LocaleId 屬性設定的地區設定。 依預設,轉換的地區設定會從其「資料流程」工作繼承,此工作進而從封裝繼承。 如果「資料流程」工作在某個容器中 (如「For 迴圈」容器),則它會從容器繼承其地區設定。
您也可以指定「一般檔案」連接管理員和「多個一般檔案」連接管理員的地區設定。
設定比較選項
地區設定會提供比較字串資料的基本規則。 例如,地區設定指定字母表中每個字母的排序位置。 但是,這些規則對某些轉換執行的比較來說可能並不夠,而且 Integration Services 還支援一組超越地區設定之比較規則的進階比較選項。 這些比較選項可在資料行層級進行設定。 例如,其中一個比較選項可讓您忽略非空格字元。 此選項的作用是可以忽略變音 (例如腔調字),這樣會使 "a" 和 "á" 在比較時被視為完全一樣。
下表描述比較選項和排序樣式。
比較選項 |
說明 |
---|---|
忽略大小寫 |
指定比較是否區分大寫與小寫字母。 如果設定此選項,則字串比較會忽略大小寫。 例如,「ABC」與「abc」視為一樣。 |
忽略假名類型 |
指定比較是否區分兩類日文的假名字元:平假名與片假名。 如果設定此選項,則字串比較會忽略假名類型。 |
忽略字元寬度 |
指定比較是否區分單一位元組字元和表示為雙位元組字元的相同字元。 如果設定此選項,則字串比較會將同一字元的單一位元組表示法和雙位元組表示法視為一樣。 |
忽略非空格字元 |
指定比較是否區分空格字元與變音。 如果設定此選項,則比較會忽略變音符號。 例如,"å" 等於 "a"。 |
忽略符號 |
指定比較是否區分字母字元與符號 (例如空白字元、標點符號、貨幣符號和數學符號)。 如果設定此選項,則字串比較會忽略符號。 例如," New York" 與 "New York",以及 "*ABC" 與 "ABC"' 均被視為一樣。 |
將標點符號當作符號來排序 |
指定比較是否對英數字元前面的所有標點符號進行排序 (連字號和撇號除外)。 例如,如果設定此選項,則「.ABC」將排在「ABC」前面。 |
「排序」、「彙總」「模糊群組」和「模糊查閱」轉換包含這些用於比較資料的選項。
「模糊群組」和「模糊查閱」轉換的 [進階編輯器] 對話方塊中會顯示 [FullySensitive] 比較旗標。 選取 [FullySensitive] 比較旗標表示會套用所有的比較選項。
相關內容
|