сравнение строковых данных

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

Сравнения строк — важная составляющая любого преобразования, которое выполняется с помощью служб Службы Integration Services. Кроме того, они применяются для вычисления выражений в переменных и выражениях свойств. Например, при преобразовании «Сортировка» сравниваются значения в наборе данных для сортировки данных по возрастанию или по убыванию.

Настройка преобразований для сравнений строк

Для таких преобразований, как «Сортировка», «Выполнение статистического вычисления», «Нечеткое группирование» и «Нечеткий уточняющий запрос», можно настраивать различные способы сравнения строк на уровне столбца. Например, можно указать, что сравнение нечувствительно к регистру. Это означает, что символы в верхнем и нижнем регистре будут считаться одинаковыми.

Приведенные ниже преобразования используют выражения, в которых могут быть строковые сравнения.

  • Преобразование «Условное разбиение» с помощью сравнений строк в выражениях может определять, в какой выход следует отправлять строки данных. Дополнительные сведения см. в статье Conditional Split Transformation.

  • Преобразование «Производный столбец» с помощью строковых сравнений в выражениях может формировать новые значения столбцов. Дополнительные сведения см. в разделе Derived Column Transformation.

Кроме того, выражения со строковыми сравнениями можно применять в переменных, сопоставлении переменных, а также в элементах управления очередностью. Дополнительные сведения о выражениях см. в разделе Выражения Integration Services (SSIS).

Обработка в ходе сравнения строк

В зависимости от характера данных и конфигурации преобразования при сравнении строковых данных может происходить следующая обработка:

  • Преобразование данных в Юникод. Если в источнике данных не использована кодировка Юникод, то данные автоматически преобразуются в Юникод до начала сравнения.

  • Использование локаля для применения правил конкретных локалей при интерпретации даты, времени, десятичных данных и порядка сортировки.

  • Применение параметров сравнения на уровне столбца для изменения чувствительности сравнений.

Преобразование строковых данных в Юникод

В зависимости от операций, которые выполняет преобразование, и конфигурации преобразования строковые данные могут преобразовываться в тип данных DT_WSTR, посредством которого строковые символы представляются в формате Юникод.

Строковые данные, имеющие тип данных DT_STR, преобразуются в Юникод с использованием кодовой страницы столбца. Службы Integration Services поддерживают кодовые страницы на уровне столбцов; каждый столбец может быть преобразован с использованием отдельной кодовой страницы.

Обычно службы Службы Integration Services могут самостоятельно определить правильную кодовую страницу по источнику данных. Например, в SQL Server можно настроить параметры сортировки для уровня базы данных и уровня столбца. Кодовая страница является производной от параметров сортировки SQL Server , которые могут быть либо параметрами сортировки Windows, либо параметрами сортировки SQL.

Если службы Службы Integration Services выдают непредвиденную кодовую таблицу или если пакет подключается к источнику данных с помощью поставщика, который не предоставил данных для определения правильной кодовой страницы, то можно указать кодовую страницу по умолчанию в источнике и назначении OLE DB. Кодовая страница по умолчанию используется вместо кодовых страниц, указанных в службах Службы Integration Services .

У файлов нет кодовых страниц. Вместо этого в диспетчере соединений одного или нескольких неструктурированных файлов, с помощью которого пакет подключается к данным в файле, предусмотрено свойство, указывающее кодовую страницу для файла. Кодовую страницу можно задавать только на уровне файла, но не на уровне столбца.

Настройка локалей

Службы Integration Services не применяют кодовые страницы при определении правил, зависящих от языкового стандарта, для сортировки данных или интерпретации даты, времени и десятичных данных. Вместо этого преобразование считывает языковой стандарт, заданный в свойстве LocaleId компонента потока данных, задачи потока данных, контейнера или пакета. По умолчанию локаль преобразования наследуется от задачи потока данных, которая в свою очередь наследует его от пакета. Если задача потока данных находится в контейнере, например в контейнере «цикл по элементам», то она наследует локаль от контейнера.

Кроме того, можно указывать локаль для диспетчеров соединений с одним или несколькими неструктурированными файлами.

Настройка параметров сравнения

Локаль содержит основные правила сравнения строковых данных. Например, локаль определяет положение сортировки каждой буквы в алфавите. Тем не менее этих правил может быть недостаточно для сравнений, выполняемых некоторыми преобразованиями, и службы Службы Integration Services поддерживают набор расширенных параметров сравнения, которых нет среди основных правил локали. Эти параметры сравнения задаются на уровне столбца. Например, один из параметров сравнения позволяет игнорировать непробельные символы. Он позволяет не учитывать при сравнении диакритические знаки, в результате чего символы a и á при сравнении будут обрабатываться как идентичные.

В приведенной ниже таблице описаны параметры сравнения и стиль сортировки.

Параметр сравнения Описание
Игнорировать регистр Указывает, следует ли при сравнении различать символы в верхнем и нижнем регистре. Если параметр задан, то строковое сравнение игнорирует регистр. Например, «ABC» при сравнении не отличается от «abc».
Игнорируется тип японской азбуки Указывает, следует ли различать при сравнении два типа символов японской азбуки: хирагана и катакана. Если параметр задан, то строковое сравнение игнорирует тип японской азбуки.
Игнорировать ширину символа Указывает, следует ли при сравнении различать однобайтовые символы или аналогичные двухбайтовые символы. Если параметр задан, то строковое сравнение рассматривает однобайтовое и двухбайтовое представления символа как один и тот же символ.
Игнорировать непробельные символы Указывает, следует ли при сравнении различать обычные символы и символы с диакритическими знаками. Если параметр задан, то строковое сравнение не учитывает диакритические знаки. Например, "Ã¥" будет считаться обычным символом "a".
Не учитывать символы Указывает, следует ли различать буквенные символы и такие символы, как пробелы, знаки пунктуации, знаки валют, а также математические символы. Если параметр задан, то строковое сравнение игнорирует символы. Например, « Москва» не отличается от «Москва», а «\*ABC» не отличается от «ABC'».
Сортировать знаки пунктуации как символы Указывает, следует ли располагать все знаки пунктуации, кроме дефиса и апострофа, перед буквенно-цифровыми символами. Например, если параметр задан, то «.ABC» оказывается перед «ABC».

Для сравнения данных эти параметры используют преобразования «Сортировка», «Выполнение статистического вычисления», «Нечеткое группирование» и «Нечеткий уточняющий запрос».

Флаг сравнения FullySensitive отображается в диалоговом окне Расширенный редактор для преобразований «Нечеткое группирование» и «Нечеткий уточняющий запрос». Если установлен флаг сравнения FullySensitive , то применяются все параметры сравнения.

См. также:

Типы данных служб Integration Services
Быстрый синтаксический анализ
Standard Parse