DBMS_RANDOM 好像不行
DBMS_RANDOM doesn't seem to work
我对这里的 Oracle SQL 还很陌生,但我已经在互联网上搜索过,以便能够从 table 中随机拉出一行,并看到了这样的代码。
firstNameGen = connection.prepareStatement(
"SELECT firstName "
+"FROM (SELECT firstName "
+"FROM firstNames "
+"ORDER BY dbms_random.value) "
+"WHERE ROWNUM = 1");
它对我不起作用。显然,我确实更改了所有列和 table 名称以匹配我自己的数据库,但它只是告诉我 "ERROR 42X01: Syntax error: Encountered "WHERE" 在第 1 行,第 58 列。"
我在 Eclipse 中工作。我需要导入功能才能使用 dbms_random 还是我只是遗漏了什么?任何帮助将不胜感激。
我不确定,但是使用 dbms_random.value may
排序在使用额外层时无法正常工作,例如 jdbc。同样,当您按 <expression returning a number>
、it orders by the expression
而不是 "column" 订购时,但是您只想显示一个值,我可以说两种替代方式:
只需将 dbms_random.value 作为列添加到查询中并按其排序。
select * from (select
firstName
, dbms_random.value as ran
from firstNames
order by ran)
where rownum=1;
使用示例()
select firstName
from firstNames sample (1)
where rownum =1;
这不是 Oracle DB 错误代码(它们以 ORA-
或 ERR-
或 TNS-
开头)。它看起来确实像 Derby 错误代码。那么您是否使用了错误的驱动程序来访问您的 oracle 数据库,或者您实际上是指使用 "Oracle Database" 的 JavaDB?我猜语法对 Derby/JavaDB.
无效
根据 this answer,以下语法有效:
"SELECT firstName FROM firstNames ORDER BY RANDOM() OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY"
我对这里的 Oracle SQL 还很陌生,但我已经在互联网上搜索过,以便能够从 table 中随机拉出一行,并看到了这样的代码。
firstNameGen = connection.prepareStatement(
"SELECT firstName "
+"FROM (SELECT firstName "
+"FROM firstNames "
+"ORDER BY dbms_random.value) "
+"WHERE ROWNUM = 1");
它对我不起作用。显然,我确实更改了所有列和 table 名称以匹配我自己的数据库,但它只是告诉我 "ERROR 42X01: Syntax error: Encountered "WHERE" 在第 1 行,第 58 列。"
我在 Eclipse 中工作。我需要导入功能才能使用 dbms_random 还是我只是遗漏了什么?任何帮助将不胜感激。
我不确定,但是使用 dbms_random.value may
排序在使用额外层时无法正常工作,例如 jdbc。同样,当您按 <expression returning a number>
、it orders by the expression
而不是 "column" 订购时,但是您只想显示一个值,我可以说两种替代方式:
只需将 dbms_random.value 作为列添加到查询中并按其排序。
select * from (select firstName , dbms_random.value as ran from firstNames order by ran) where rownum=1;
使用示例()
select firstName from firstNames sample (1) where rownum =1;
这不是 Oracle DB 错误代码(它们以 ORA-
或 ERR-
或 TNS-
开头)。它看起来确实像 Derby 错误代码。那么您是否使用了错误的驱动程序来访问您的 oracle 数据库,或者您实际上是指使用 "Oracle Database" 的 JavaDB?我猜语法对 Derby/JavaDB.
根据 this answer,以下语法有效:
"SELECT firstName FROM firstNames ORDER BY RANDOM() OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY"