字串比較是 Integration Services 所執行之許多轉換的重要部分,而且字串比較也會用於評估變數和屬性運算式中的運算式。 例如,排序轉換會比較數據集中的值,以遞增或遞減順序排序數據。
設定用於字串比較的轉換
您可以自定義排序、匯總、模糊群組和模糊查閱轉換,以更改在欄位層級進行字串比較的方式。 例如,您可以指定比較忽略大小寫,這表示大寫和小寫字元會被視為相同的字元。
下列轉換會使用可包含字串比較的表達式。
條件式分割轉換可以在表示式中使用字串比較,以決定資料列要傳送到哪一個輸出。 如需詳細資訊,請參閱 Conditional Split Transformation。
衍生的數據行轉換可以在表達式中使用字串比較來產生新的數據行值。 如需詳細資訊,請參閱 衍生的資料行轉換。
變數、變數對應和優先順序條件約束也會使用表達式,其中包含字串比較。 如需表達式的詳細資訊,請參閱 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」 等於「紐約」,而「*ABC」和「ABC」相同。 |
| 將標點符號排序為符號 | 指定比較是否會排序英數位元之前的連字元和單引號以外的所有標點符號。 例如,如果已設定此選項,則 ".ABC" 會在 "ABC" 之前排序。 |
Sort、Aggregate、Fuzzy Grouping 和 Fuzzy Lookup 轉換包含用來比較數據的這些選項。
在 進階編輯器 對話框中,[模糊群組] 和 [模糊查閱] 轉換的 FullySensitive 比較旗標會顯示。 選取 [完全區分] 比較旗標表示所有比較選項都適用。