powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Функция rand()
15 сообщений из 15, страница 1 из 1
Функция rand()
    #33572129
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Подключаемся к АСА9
2. Вызываем rand
3. Отключаемся
повторяем п.п.1-3, на п.2 получаем одно и тоже значение.
Что сделать, чтобы каждый раз получать разные значения? Функции наподобие randomize() не нашел.
...
Рейтинг: 0 / 0
Функция rand()
    #33572140
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А хелп почитать?
BOL Syntax
RAND ( [integer-expression] )

Parameters
integer-expression The optional seed used to create a random number. This argument allows you to create repeatable random number sequences.
...
Рейтинг: 0 / 0
Функция rand()
    #33572161
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читал, не помогло.
На сколько я понял, это просто дает выбрать набор(последовательность)
случайных чисел. Но первый вызов rand(), после rand(10) к примеру, всегда
будет возвращать одинаковые значения. Ведь это псевдослучайные числа, а
иннициализировать генератор константой - получать одну и туже
последовательность. Я не прав?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Функция rand()
    #33572182
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прав.
Ну сделай себе rand(X) Где X количество миллисекунд от полуночи. Вот тебе и будет randomize(). Собственно говоря, большинство реализаций randomize() именно так и сделаны :)
...
Рейтинг: 0 / 0
Функция rand()
    #33964469
White OwlПрав.
Ну сделай себе rand(X) Где X количество миллисекунд от полуночи. Вот тебе и будет randomize(). Собственно говоря, большинство реализаций randomize() именно так и сделаны :)

а как в Субасе 12,5 получить количество миллисекунд от полуночи?
...
Рейтинг: 0 / 0
Функция rand()
    #33964535
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Васильев Сергей Владимирович White OwlПрав.
Ну сделай себе rand(X) Где X количество миллисекунд от полуночи. Вот тебе и будет randomize(). Собственно говоря, большинство реализаций randomize() именно так и сделаны :)

а как в Субасе 12,5 получить количество миллисекунд от полуночи?
DATEDIFF('millisecond',.....
...
Рейтинг: 0 / 0
Функция rand()
    #33964667
Короче мне нужно сделать случайную выборку строки из таблицы, для этого хотябы надо возвращать резутьтат выборки селекта в случайном порядке, но такой код ничего не дает

Код: plaintext
1.
SELECT * FROM mod_happy_ticket ORDER BY RAND (DATEDIFF(millisecond, getdate(), getdate()))
...
Рейтинг: 0 / 0
Функция rand()
    #33964908
Нужно, делать случайную выборку из БД /Sybase 12.5/ одной строки /для конкурса, определение победителей/
В MySQL проходит такая штука, причем об этом написано даже в мануале к нему /Следует учитывать, что оператор RAND() в выражении WHERE при выполнении выражения WHERE будет вычисляться каждый раз заново/



SELECT * FROM table WHERE 1=1 ORDER BY RAND() LIMIT 1


Либо так даже

SELECT * FROM table ORDER BY RAND() LIMIT 1


В Sybase 12.5 это не проходит, т.к. как я понял значение RAND() для запроса вычисляется единожды

Пример

код SQL
1:

SELECT Phone,rand() FROM mod_happy_ticket WHERE Phone>0 ORDER BY RAND()

Результат

Phone rand()
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
789777 .98420166176939461
79139166670 .98420166176939461


Как нибудь, в Субасе можно сделать это??? В виде хранимой процедуры...
...
Рейтинг: 0 / 0
Функция rand()
    #33964948
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, с миллисекундами номер не пройдет.
Нужно попробовать посунуть RAND, что уникальное для каждой записи.
Например поле ключа. Если он у Вас конечно числовой, иначе как-то преобразовать в число.
...
Рейтинг: 0 / 0
Функция rand()
    #33964990
да, я пробовал работает, только бы при больших значениях ключей не было бы "переполнения", т.к. параметр РАНДа вроде ограничен по длине
...
Рейтинг: 0 / 0
Функция rand()
    #33965024
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Васильев Сергей Владимировичда, я пробовал работает, только бы при больших значениях ключей не было бы "переполнения", т.к. параметр РАНДа вроде ограничен по длине
Ну так ограничьте значения ключей передаваемых в RAND арифметикой.
...
Рейтинг: 0 / 0
Функция rand()
    #33965086
just_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Try this:


create table #test_rand (id int, col1 varchar(10))
go
insert into #test_rand values (1,"some val a")
insert into #test_rand values (2,"some val b")
insert into #test_rand values (3,"some val c")
go
select '--------------Static--------------'
go
select id,rand() from #test_rand
go
select '--------------Dynamic--------------'
go
select t.id,(select rand() + t.id*0) RandomNumber from #test_rand t
go
...
Рейтинг: 0 / 0
Функция rand()
    #33982828
just_meTry this:


create table #test_rand (id int, col1 varchar(10))
go
insert into #test_rand values (1,"some val a")
insert into #test_rand values (2,"some val b")
insert into #test_rand values (3,"some val c")
go
select '--------------Static--------------'
go
select id,rand() from #test_rand
go
select '--------------Dynamic--------------'
go
select t.id,(select rand() + t.id*0) RandomNumber from #test_rand t
go

А какой тут результат? У меня чего-то не то
...
Рейтинг: 0 / 0
Функция rand()
    #33982847
Все разобрался, что к чему, все окей
...
Рейтинг: 0 / 0
Функция rand()
    #34012816
Я меня еще не только выборка случаной строки из БД, но и еще по условию, а точнее по диапозону дат

вообщем у меня сейчас так

CREATE PROCEDURE dbo.mod_happy_ticket_HReg
(
@startdate DateTime,
@finishdate DateTime
)
AS
BEGIN
set rowcount 1
select t.IdRegistration, Phone, (select rand(t.IdRegistration)+t.phone) RandomNumber from mod_happy_ticket t WHERE t.datetime>@startdate AND t.datetime<@finishdate ORDER BY RandomNumber
END

Все работает, вот, правдо при многократных запусках на неизменном наборе данных получается. одна и таже строка, т.е. как бы не рандомайза, но мне этого и не требуется
Вопросы
1) В конце надо сбрасывать rowcount
set rowcount 0

2) При больших значения IdRegistration rand(t.IdRegistration) переполнения не будет ранда?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Функция rand()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]