Перейти к основному содержимому

SubField — функция скриптa и диаграммы

SubField() используется для извлечения компонентов подстроки из поля родительской строки, где поля исходной записи состоят из двух или более частей, разделенных знаком разделителя.

Функцию Subfield() можно использовать, например для извлечения имени или фамилии из списка записей, состоящего из полных имен, отдельных частей имени пути или для извлечения данных из таблиц с данными, разделенными запятыми.

Если используется функция Subfield() в операторе LOAD и дополнительный параметр field_no не указан, для каждой подстроки будет создана одна полная запись. Если с помощью функции Subfield() загружено несколько полей, будет создано декартово произведение всех возможных комбинаций.

Syntax:  

SubField(text, delimiter[, field_no ])

Return data type: строка

Arguments:  

Аргументы
Аргумент Описание
text Оригинальная строка. Это может быть неизменяемый текст, переменная, расширение со знаком доллара или другое выражение.
delimiter Символ во входной строке text, разделяющий строку на части.
field_no

Дополнительный третий аргумент, являющийся целым числом, который указывает, какие подстроки родительской строки text необходимо вернуть. Используйте значение 1 для возврата первой подстроки, значение 2 для возврата второй подстроки и так далее.

  • Если field_no является положительным значением, подстроки извлекаются слева направо.
  • Если field_no является отрицательным значением, подстроки извлекаются справа налево.
Подсказка: Функцию SubField() можно использовать вместо сложных комбинаций таких функций, как Len(), Right(), Left(), Mid() и другие строковые функции.

Example:  

Добавьте образец скрипта в свое приложение и запустите. Затем добавьте на лист приложения поля, указанные в столбце с результатами, чтобы увидеть результаты.

FullName:

LOAD * inline [

Name

'Dave Owen'

'Joe Tem'

];

 

SepNames:

Load Name,

SubField(Name, ' ',1) as FirstName,

SubField(Name, ' ',-1) as Surname

Resident FullName;

Drop Table FullName;

Результирующая таблица
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

Example:  

В этом примере показано, как с помощью нескольких экземпляров функции Subfield(), в каждом из которых не указан параметр field_no, из одного оператора LOAD создать декартово произведение всех возможных комбинаций. Параметр DISTINCT используется, чтобы не допустить создания дубликата записи.

Добавьте образец скрипта в свое приложение и запустите. Затем добавьте на лист приложения поля, указанные в столбце с результатами, чтобы увидеть результаты.

LOAD DISTINCT

Instrument,

SubField(Player,',') as Player,

SubField(Project,',') as Project;

 

Load * inline [

Instrument|Player|Project

Guitar|Neil,Mike|Music,Video

Guitar|Neil|Music,OST

Synth|Neil,Jen|Music,Video,OST

Synth|Jo|Music

Guitar|Neil,Mike|Music,OST

] (delimiter is '|');

 

Результирующая таблица
Instrument Player Project
Guitar Mike Music
Guitar Mike Video
Guitar Mike OST
Guitar Neil Music
Guitar Neil Video
Guitar Neil OST
Synth Jen Music
Synth Jen Video
Synth Jen OST
Synth Jo Music
Synth Neil Music
Synth Neil Video
Synth Neil OST