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中实现布尔类型的主要内容,如果未能解决你的问题,请参考以下文章