【发布时间】:2012-11-14 09:36:55
【问题描述】:
我的页面上有一个报告区域,它从students 表中获取数据。在该表中,有一个名为 cv_lodged 的列,它是 1 或 0,表示是或否。在报告中,它将此列数据显示为 0 或 1,我想将其更改为显示是或否。
我该怎么做?
【问题讨论】:
标签: oracle oracle-apex
我的页面上有一个报告区域,它从students 表中获取数据。在该表中,有一个名为 cv_lodged 的列,它是 1 或 0,表示是或否。在报告中,它将此列数据显示为 0 或 1,我想将其更改为显示是或否。
我该怎么做?
【问题讨论】:
标签: oracle oracle-apex
您可以在查询中添加CASE 语句
SELECT (CASE WHEN cv_lodged = 1
THEN 'Yes'
ELSE 'No'
END) cv_lodged,
other_columns
FROM students
如果这很常见,您最好创建一个将伪布尔数据转换为字符串的函数。类似的东西
CREATE FUNCTION my_bool_to_str( p_num IN NUMBER )
RETURN VARCHAR2
IS
BEGIN
IF( p_num = 1 )
THEN
RETURN 'Yes';
ELSE
RETURN 'No';
END IF;
END;
你会在你的查询中调用
SELECT my_bool_to_str( cv_lodged ) cv_lodged,
other_columns
FROM students
【讨论】:
我通常只是在名为 YES1_NO0 的共享组件中创建了一个静态 LOV,其中包含 2 个条目:“是”-> 1、“否”-> 0。
然后,您可以在交互式报表中更改这些列。为此,请编辑 IR 列。将“显示类型”更改为“显示为文本(基于 LOV,转义特殊字符)”。然后在“值列表”下将“列过滤器类型”设置为“使用命名的值列表过滤精确匹配”并选择命名的 LOV。
但可以肯定的是,您完全可以在 SQL 中做到这一点。
【讨论】:
目前,有一种更简单的方法可以做到这一点。
首先以开发者身份打开带有“Yes/No”项的APEX页面,点击该项,打开页面项设置。
将 Settings 值从 Use component settings 更改为 Custom。
然后将Yes Value 更改为1 并将No Value 更改为0。
这个解决方案有一些优点:
select decode(mycolumn, 1, 'Y', 'N') from mytable where id = 123;) 或 select case when ...
【讨论】: