4

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

我怎样才能做到这一点?

4

3 回答 3

6

您可以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
于 2012-11-26T20:46:40.750 回答
0

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

首先以开发者身份打开带有“Yes/No”项的APEX页面,点击该项,打开页面项设置。

将设置值从更改Use component settingsCustom

然后更改Yes Valueto1No Valueto 0

在此处输入图像描述

该解决方案有一些优点:

  1. 无需将值 1 或 0解码为 Y 或 N ( select decode(mycolumn, 1, 'Y', 'N') from mytable where id = 123;) 或select case when ...
  2. 无需将提交的值从 Y 或 N解码回 1 或 0
于 2014-10-24T14:41:25.573 回答
0

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

于 2012-11-26T22:04:52.623 回答