sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL genererer tilfældigt output med listaggs

Her er en måde - generering af strengene kvasi-tilfældigt (ved hjælp af ora_hash at gøre tricket), mens det er på en perfekt deterministisk, reproducerbar måde. Hvis du ønsker at få forskellige (men lignende) resultater, skal du bruge det tredje argument til ora_hash for at give en anden frø end standarden (som er 0). Hvis du vil have forskellige resultater hver gang, skal du angive en dbms_random.value() værdi som frø; dette vil stadig kræve, at der kun genereres én "tilfældig" værdi for hele forespørgslen. Du kan også spille med den øvre grænse (i mit eksempel 280) for at få mere eller færre null (og kortere vs. længere kommaseparerede strenge, mere generelt).

WITH data ( value ) AS ( SELECT 30 FROM DUAL UNION ALL SELECT 31 FROM DUAL UNION ALL SELECT 32 FROM DUAL UNION ALL SELECT 33 FROM DUAL ), ids ( id ) AS ( SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 8 ) select id, ( select listagg(case when ora_hash(id * value, 1000) < 280 then value end, ',') within group(order by value) from data ) as vals from ids ; ID VALS -- --------------- 1 33 2 32 3 4 30,32 5 30,31 6 32 7 8

  1. Byg en dynamisk opdateringsforespørgsel i psycopg2

  2. Oracle.ManagedDataAccess til AWS RDS DB - TCPS:Ugyldig SSL Wallet (Magic)

  3. Hvordan man skriver og udfører et shell-script for at oprette en mysql-databank og en tabel

  4. Sqlalchemy og PostgreSql:hvordan indstilles primær nøgle manuelt uden konflikter i fremtiden?