sql >> Databáze >  >> RDS >> Sqlserver

Vygenerujte náhodnou int hodnotu od 3 do 6

Užitečný editor přidal 'Select' před každý příkaz, ale smyslem této položky je, že může generovat jedinečné klíče pro každý řádek v návratu, nikoli pouze pro jednu položku (pro to bych použil funkci Rand()). :Vyberte top 100 Rand(),* z tblExample

Vrátí stejnou náhodnou hodnotu pro všech 100 řádků.

Zatímco:Vyberte top 100 ABS(CHECKSUM(NEWID()) % 10),* z tbleexample

Vrátil by jinou náhodnou hodnotu mezi 0 a 9 na každém řádku v návratu. Takže zatímco výběr usnadňuje kopírování a vkládání, můžete zkopírovat logiku do příkazu select, pokud je to požadováno.

Toto vygeneruje náhodné číslo mezi 0-9

SELECT ABS(CHECKSUM(NEWID()) % 10)

1 až 6

SELECT ABS(CHECKSUM(NEWID()) % 6) + 1

3 až 6

SELECT ABS(CHECKSUM(NEWID()) % 4) + 3

Dynamické (na základě komentáře Eilert Hjelmeseths, aktualizováno za účelem opravy chyby (+ až -))

SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min

Aktualizováno na základě komentářů:

  • NEWID generuje náhodný řetězec (pro každý řádek na oplátku)
  • CHECKSUM vezme hodnotu řetězce a vytvoří číslo
  • modul (% ) vydělí tímto číslem a vrátí zbytek (to znamená, že maximální hodnota je o jedna menší než číslo, které používáte)
  • ABS mění negativní výsledky na pozitivní
  • pak k výsledku přidejte jeden, abyste odstranili 0 výsledků (pro simulaci hodu kostkou)


  1. Vytvořte dočasnou tabulku v příkazu SELECT bez samostatné CREATE TABLE

  2. Najděte překrývající se období v PostgreSQL

  3. Vybíráte všechny sloupce, které začínají XXX pomocí zástupného znaku?

  4. Jak přizpůsobit konfigurační soubor oficiálního obrazu PostgreSQL Docker?