Oracle中实现布尔类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中实现布尔类型相关的知识,希望对你有一定的参考价值。

参考技术A 一直被Oracle中没有boolean类型困扰 网上有两种解决方案 一是用Number( ) 二是用Char( ) 各有所长 个人比较喜欢用Number方式解决 原因很简单 因为是从C语言开始的 这符合C语言的习惯 前几天有幸咨询到Oracle方面的顾问 他们提供的解决方案是用Char( )实现boolean 但也有需要注意的地方 原话如下   如果是特定boolean类型情况下 Char( )是比Number( )更好的选择 因为前者所用的存储空间会比后者少 但这二者在查询时存储空间的节省会提供查效率 但是要注意的是用Char( )的时候不能让这个字段可以为空 必须有缺省 否则查询效率会降低 lishixinzhi/Article/program/Oracle/201311/16922

在 Apache Impala 中实现 Oracle 的 rownum()

【中文标题】在 Apache Impala 中实现 Oracle 的 rownum()【英文标题】:Implementing Oracle's rownum() in Apache Impala 【发布时间】:2021-12-29 11:16:39 【问题描述】:

我正在将 Oracle 查询转换为 Impala 等效项。我有一个这样的 Oracle 查询:

select c1, c2 from t1 
where rownum <= (select c3 from t2 where c4 = 'Some string' and c5 = 'some string')
and c2 in (1,2,3) order by c3 asc;

但是 Impala 不支持我在研究时了解到的 rownum()。请帮助我在 Impala 中实现这一点。

提前谢谢你。

【问题讨论】:

【参考方案1】:

你在 oracle 中没有类似 rownum 的东西。但是,您可以使用 row_number() over (partition by col, order by col) 函数创建一个伪列。您需要避免按子句进行分区。 您可以更改 sql 并添加子查询来计算 rownum 列,如下所示。 此外,您需要更改您的查询,以便它在 impala 中使用 join 而不是您上面编写的方式工作。

select c1, c2, c3 from 
(select c1,c2, row_number() over (order by c1) as rownum from t1 ) t1
join (select c3 from t2 where c4 = 'Some string' and c5 = 'some string')
and c2 in (1,2,3)) t2 on
rownum<=t2.c3  
order by c3 asc;

【讨论】:

【参考方案2】:

根据documentation,您可以按原样使用Impala 的row_number。 这意味着如果您尝试这种方式,您的查询将成功执行:

select column from table
where row_number = 1;

【讨论】:

对不起,我认为没有这样的系统功能。您需要计算列。 我没有可编译的环境来尝试Impala的row_number,但我试图解释它的文档,但是知道如何使用row_number()很好。 欢迎...您可以将demo.gethue.com/hue/editor?editor=358102 用于 hive(类似于 Impala):)

以上是关于Oracle中实现布尔类型的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 中的 JPA 和 Flyway 布尔类型

Oracle数据库中是否有任何布尔类型?

默认情况下使用 Oracle 数据库时,Hibernate 将布尔数据类型映射到啥?

Oracle 存储过程的“布尔”参数

在 Oracle 中创建布尔属性? [复制]

Mybatis疑难事件簿:#‘传递布尔值无效问题