Приветствую Вас в своем блоге.
Сегодня пойдет речь о создании и использовании случайных последовательностей типа STRING в pgScript, а так же использование регулярных выражений.
pgScript имеет функционал быстрого создания массивов рандомных последовательностей нескольких типов данных. Области применения таких последовательностей ограничиваются только фантазией разработчиков скриптов, но чаще всего их используют как генераторы случайных данных для тестирования различных единиц функционала базы данных, либо генерации уникальных ключей. Тут уже дело вкуса.
Итак, генераторы последовательностей строк...
Строковая последовательность определяется следующим образом:
Min - Минимальное количество символов в одной единице последовательности.
Max - Максимальное количество символов в одной последовательности.
Count - Количество возвращаемых последовательностей. Т.е. другими словами - количество слов в предложении. (не обязательный параметр, по умолчанию - "1").
Seed - Параметр фиксирующий последовательность созданную при инициализации переменной, и не позволяющий менять ее при последующем использовании.
Т.е. Например:
Результат:
В этом скрипте мы создали рандомную последовательность символов состоящую из пяти блоков размерностью от одного символа до четырех.
Передача последовательности другой переменной.
В этом скрипте приведу пример использования только обязательных параметров:
Результат:
[PGSCRIPT ] lUWQ
Ранее определенная последовательность при присваивании другой переменной изменяет свое значение. Например:
Результат:
В данном скрипте мы получили 3 абсолютно разные случайные строковые последовательности длинной 25 символов.
Соответственно следующий скрипт аналогичен предыдущему:
Но при использовании параметра Seed ситуация меняется. Например:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25,1);
print @Gen;
set @One = string(25,25,1,1);
print @One;
set @Two = string(25,25,1,1);
print @Two;
end
Результат:
[PGSCRIPT ] z1WEWBeEN3hjFKdUrmPMQylmp
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
При повторном запуске скрипта, значение @Gen (первая строка измениться, а остальные останутся неизменными).
Для ясности сказанного приведу еще пример:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25,1);
print @Gen;
set @One = string(25,25,1,1);
print @One;
set @Two = string(25,25,1,2);
print @Two;
end
Результат:
[PGSCRIPT ] QNSVbVPynOMyCi1YbtwyuNhHl
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
[PGSCRIPT ] l2f463L0l8pNBrg3BJpOoWW5T
В этом скрипте изменилось значение параметра Seed в строке
что повлияло на изменение третьей строки результата относительно первого примера.
При повторном запуске скрипта, так же как и в примере выше измениться только первая строка результата, остальными останутся неизменными.
Вот и все, что я хотел рассказать по строковым последовательностям. Если у Вас есть замечания, пожелания или дополнения к статьям - просьба оставлять комменты или высылать почтой.
Регулярные выражения
В pgScript есть возможность генерации случайных строковых значений с использованием регулярных выражений. Синтаксис функции выглядит следующим образом:
REGEX (regex, [seed]);
где,
regex - Строка-регулярное выражение,
[seed] - необязательный параметр, который задает генератору порядковый номер значения последовательности. Т.е. при использовании этого параметра, каждый раз при обращении к генератору будет возвращено одно и то же значение номер которого указан в данном параметре.
Например вот таким образом, можно генерировать произвольные адреса электронных почтовых ящиков :) :
declare @Rec1;
begin
set @Rec1 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru'); --пять букв "_" шесть цифр "@mail.ru"
print @Rec1;
end
Результат:
[PGSCRIPT ] jzsoz_397596@mail.ru
Пример использования с параметром [seed]:
declare @Rec1;
declare @Rec2;
declare @Rec3;
declare @Rec4;
begin
set @Rec1 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',1);
print @Rec1;
set @Rec2 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',1);
print @Rec2;
set @Rec3 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',2);
print @Rec3;
set @Rec4 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',2);
print @Rec4;
end
Результат:
Сегодня пойдет речь о создании и использовании случайных последовательностей типа STRING в pgScript, а так же использование регулярных выражений.
pgScript имеет функционал быстрого создания массивов рандомных последовательностей нескольких типов данных. Области применения таких последовательностей ограничиваются только фантазией разработчиков скриптов, но чаще всего их используют как генераторы случайных данных для тестирования различных единиц функционала базы данных, либо генерации уникальных ключей. Тут уже дело вкуса.
Итак, генераторы последовательностей строк...
Строковая последовательность определяется следующим образом:
set @Gen = string(Min,Max,[Count], [Seed]);
где,Min - Минимальное количество символов в одной единице последовательности.
Max - Максимальное количество символов в одной последовательности.
Count - Количество возвращаемых последовательностей. Т.е. другими словами - количество слов в предложении. (не обязательный параметр, по умолчанию - "1").
Seed - Параметр фиксирующий последовательность созданную при инициализации переменной, и не позволяющий менять ее при последующем использовании.
Т.е. Например:
declare @Gen;
begin
set @Gen = string(1,4,5);
print @Gen;
end
begin
set @Gen = string(1,4,5);
print @Gen;
end
Результат:
[PGSCRIPT ] 4 v0aa H Rhp oiS
В этом скрипте мы создали рандомную последовательность символов состоящую из пяти блоков размерностью от одного символа до четырех.
Передача последовательности другой переменной.
В этом скрипте приведу пример использования только обязательных параметров:
declare @Gen;
begin
set @Gen = string(1,4);
print @Gen;
end
begin
set @Gen = string(1,4);
print @Gen;
end
Результат:
[PGSCRIPT ] lUWQ
Ранее определенная последовательность при присваивании другой переменной изменяет свое значение. Например:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25);
set @One = @Gen;
set @Two = @Gen;
print @Gen;
print @One;
print @Two;
end
declare @One;
declare @Two;
begin
set @Gen = string(25,25);
set @One = @Gen;
set @Two = @Gen;
print @Gen;
print @One;
print @Two;
end
Результат:
[PGSCRIPT ] RNrOZicRAIcEJb7krS53aVo2S
[PGSCRIPT ] ZARhDW5o5jo5vH73k1cz3k7BM
[PGSCRIPT ] B4PlqgkAfVf5GCbhc7cHmP5YD
[PGSCRIPT ] ZARhDW5o5jo5vH73k1cz3k7BM
[PGSCRIPT ] B4PlqgkAfVf5GCbhc7cHmP5YD
В данном скрипте мы получили 3 абсолютно разные случайные строковые последовательности длинной 25 символов.
Соответственно следующий скрипт аналогичен предыдущему:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25);
set @One = @Gen;
set @Two = @One; --(теперь @Two присваиваем @One, вместо @Gen)
print @Gen;
print @One;
print @Two;
end
Результат:declare @One;
declare @Two;
begin
set @Gen = string(25,25);
set @One = @Gen;
set @Two = @One; --(теперь @Two присваиваем @One, вместо @Gen)
print @Gen;
print @One;
print @Two;
end
[PGSCRIPT ] zRXmo4pdf6HvKf8x7U8kHZzmf
[PGSCRIPT ] 7L6yBHpRUl3qyifuUwzRK8XQY
[PGSCRIPT ] WxBTHBTuwBxtXLyu3xOg9YgxP
[PGSCRIPT ] 7L6yBHpRUl3qyifuUwzRK8XQY
[PGSCRIPT ] WxBTHBTuwBxtXLyu3xOg9YgxP
Но при использовании параметра Seed ситуация меняется. Например:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25,1);
print @Gen;
set @One = string(25,25,1,1);
print @One;
set @Two = string(25,25,1,1);
print @Two;
end
Результат:
[PGSCRIPT ] z1WEWBeEN3hjFKdUrmPMQylmp
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
При повторном запуске скрипта, значение @Gen (первая строка измениться, а остальные останутся неизменными).
Для ясности сказанного приведу еще пример:
declare @Gen;
declare @One;
declare @Two;
begin
set @Gen = string(25,25,1);
print @Gen;
set @One = string(25,25,1,1);
print @One;
set @Two = string(25,25,1,2);
print @Two;
end
Результат:
[PGSCRIPT ] QNSVbVPynOMyCi1YbtwyuNhHl
[PGSCRIPT ] NWp23Wf0N4PgavqW5ePhulG2j
[PGSCRIPT ] l2f463L0l8pNBrg3BJpOoWW5T
В этом скрипте изменилось значение параметра Seed в строке
set @Two = string(25,25,1,2);
что повлияло на изменение третьей строки результата относительно первого примера.
При повторном запуске скрипта, так же как и в примере выше измениться только первая строка результата, остальными останутся неизменными.
Вот и все, что я хотел рассказать по строковым последовательностям. Если у Вас есть замечания, пожелания или дополнения к статьям - просьба оставлять комменты или высылать почтой.
Регулярные выражения
В pgScript есть возможность генерации случайных строковых значений с использованием регулярных выражений. Синтаксис функции выглядит следующим образом:
REGEX (regex, [seed]);
где,
regex - Строка-регулярное выражение,
[seed] - необязательный параметр, который задает генератору порядковый номер значения последовательности. Т.е. при использовании этого параметра, каждый раз при обращении к генератору будет возвращено одно и то же значение номер которого указан в данном параметре.
Например вот таким образом, можно генерировать произвольные адреса электронных почтовых ящиков :) :
declare @Rec1;
begin
set @Rec1 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru'); --пять букв "_" шесть цифр "@mail.ru"
print @Rec1;
end
Результат:
[PGSCRIPT ] jzsoz_397596@mail.ru
Пример использования с параметром [seed]:
declare @Rec1;
declare @Rec2;
declare @Rec3;
declare @Rec4;
begin
set @Rec1 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',1);
print @Rec1;
set @Rec2 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',1);
print @Rec2;
set @Rec3 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',2);
print @Rec3;
set @Rec4 = REGEX ('[a-z]{5}_[0-9]{6}@mail.ru',2);
print @Rec4;
end
Результат:
[PGSCRIPT ] jnvab_358005@mail.ru
[PGSCRIPT ] jnvab_358005@mail.ru
[PGSCRIPT ] tbrbc_706010@mail.ru
[PGSCRIPT ] tbrbc_706010@mail.ru
Данный пример показывает, что при каждом обращении к генератору с параметром [seed] в результате будет возвращено одно и тоже значение, которое зависит от значения параметра [seed]. Предположительно, [seed] - это номер значения в генерируемой последовательности.
Отлично, а как же остальные типы данных?
ОтветитьУдалить:) По мере поступления свободного времени, я опишу все остальные типы...
Удалить