Karena pendekatan saya untuk pertanyaan tes yang saya kerjakan dalam pertanyaan ini tidak berhasil, saya mencoba sesuatu yang lain sekarang. Apakah ada cara untuk mengetahui random()
fungsi pg agar saya hanya mendapatkan angka antara 1 dan 10?
sql
postgresql
random
KB22
sumber
sumber
trunc()
mengembalikan tipe data yang sama dengan input (seperti yang dinyatakan di manual). Anda perlu mentransmisikan hasilnya ke integer:trunc(random() * 20)::int
random()
akan mengembalikan nilai <1 yang bila dikalikan dengan 9 akan> = 9 karena sifat tidak tepat dari tipe presisi ganda ? Dalam prakteknya bahkan jika mungkin itu akan menjadi sangat tidak mungkin tentu saja karena presisi 15 digit atau lebih.width_bucket(random(), 0, 1, 10)
sebagai alternatifUntuk meringkas dan sedikit menyederhanakan, Anda dapat menggunakan:
Dan Anda dapat menguji ini seperti yang disebutkan oleh @ user80168
sumber
ceil(random() * 10)
menghasilkan 0 - Aku akan tetapfloor
.SELECT floor(random() * 10 + 1);
Jika Anda menggunakan SQL Server maka cara yang benar untuk mendapatkan integer adalah
Dimana
sumber
(trunc (random () * 10)% 10) + 1
sumber
Versi jawaban hythlodayr yang benar.
Keluaran dari
trunc
harus diubah menjadiINTEGER
. Tapi itu bisa dilakukan tanpatrunc
. Jadi ternyata sederhana.Menghasilkan keluaran INTEGER dalam kisaran [1, 10] yaitu 1 & 10 inklusif.
Untuk nomor apa pun (float), lihat jawaban pengguna80168. yaitu jangan mengubahnya menjadi
INTEGER
.sumber
Sebenarnya saya tidak tahu Anda ingin ini.
coba ini
sumber
Prosedur tersimpan ini memasukkan nomor rand ke dalam tabel. Awas, itu memasukkan nomor yang tak ada habisnya. Berhenti mengeksekusinya ketika Anda mendapatkan cukup nomor.
buat tabel untuk kursor:
PERGILAH
Buat tabel untuk memuat nomor Anda:
MEMASUKKAN SKRIP:
MEMBUAT DAN MELAKSANAKAN PROSEDUR:
Isi tabel Anda:
sumber