在APEX报告中将0或1值更改为“是”和“否”

时间:2012-11-26 20:42:57

标签: oracle oracle-apex

我的页面上有一个报告区域,它从students表中获取数据。在该表中,有一个名为cv_lodged的列,它是1或0表示是或否。在报告中,它将此列数据显示为0或1,我想将其更改为显示是或否。

我该怎么做?

3 个答案:

答案 0 :(得分:5)

您可以在查询中添加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

答案 1 :(得分:0)

我通常只在共享组件中创建一个名为YES1_NO0的静态LOV,其中包含两个条目:'是' - > 1,'不' - > 0
在Interactive Reports中,您可以更改这些列。为此,请编辑IR列。将“显示类型”更改为“显示为文本(基于LOV,转义特殊字符)”。然后在“值列表”下将“列过滤器类型”设置为“使用命名的值列表过滤完全匹配”并选择命名的LOV。 但可以肯定的是,你可以在SQL中完全做到这一点。

答案 2 :(得分:0)

目前,有一种更简单的方法可以做到这一点。

首先使用"是/否"打开APEX页面。作为开发人员的项目,然后单击该项目以打开页面项目设置。

设置值从Use component settings更改为Custom

然后将Yes Value更改为1,将No Value更改为0

enter image description here

这个解决方案有一些优点:

  1. 无需解码值1或0到Y或N(select decode(mycolumn, 1, 'Y', 'N') from mytable where id = 123;)或select case when ...
  2. 无需解码将提交的值从Y或N解回为1或0