Oracle SQL-选择显式定义值的列

Oracle SQL-选择显式定义值的列,sql,oracle,Sql,Oracle,假设我有一张这样的桌子: 我的桌子 Name | Age Jack 20 Joe 33 John 4 Bob 0 假设我想从mytable中选择所有行以及一个自定义值列:random:'rabbit'、'wild'、'nuts' Name | Age | random Jack 20 rabbit Joe 33 wild John 4 nuts Bob 0 NU

假设我有一张这样的桌子:

我的桌子

Name  |  Age  
Jack     20
Joe      33
John     4
Bob      0
假设我想从mytable中选择所有行以及一个自定义值列:
random:'rabbit'、'wild'、'nuts'

Name  |  Age  |  random
Jack     20      rabbit
Joe      33      wild 
John     4       nuts
Bob      0       NULL

这怎么办呢?

你想要
case
表达式吗

select t.*, (case when age = 20 then 'rabbit' 
                  when age = 33 then 'wild' 
                  when age = 4 then 'nuts' 
             end) as random
from table t;

您可以使用添加带有随机字符串的列


[类似答案][2[

这有点灵活,但也更复杂

WITH random AS (
  SELECT row_number() OVER (ORDER BY (1)) rank, val FROM (
    SELECT 'rabbit' AS val FROM DUAL
    UNION ALL
    SELECT 'wild' AS val FROM DUAL
    UNION ALL
    SELECT 'nuts' AS val FROM DUAL
    UNION ALL
    SELECT NULL AS val FROM DUAL
  )
  ORDER BY dbms_random.value
),
myrows AS (
  SELECT row_number() OVER (ORDER BY (1)) rank, mytable.*
  FROM mytable
)
SELECT myrows.Name, myrows.Age, random.val
FROM myrows
LEFT JOIN random ON myrows.rank = random.rank;

不,根本没有条件,我只是希望能够将一个值列表作为另一列传递给
select
,这是可能的吗?从何处获取值?最好将手动键控作为查询语句的一部分“手动键控”是什么意思?是否有这些值的表和函数?是否要为每一行提取一个随机值?
row\u number()。
WITH random AS (
  SELECT row_number() OVER (ORDER BY (1)) rank, val FROM (
    SELECT 'rabbit' AS val FROM DUAL
    UNION ALL
    SELECT 'wild' AS val FROM DUAL
    UNION ALL
    SELECT 'nuts' AS val FROM DUAL
    UNION ALL
    SELECT NULL AS val FROM DUAL
  )
  ORDER BY dbms_random.value
),
myrows AS (
  SELECT row_number() OVER (ORDER BY (1)) rank, mytable.*
  FROM mytable
)
SELECT myrows.Name, myrows.Age, random.val
FROM myrows
LEFT JOIN random ON myrows.rank = random.rank;