- 同一个数据库“同义词”实现下实现当前用户访问另一个用户的表:
create or replace synonym pubtrsts for user.tablename;(user为具体的用户,tablename为表名)
select * from dba_synonyms; (查询数据库下的所有同义词)
select * from user_synonyms; (查询当前用户下的所有同义词) - 拉链表使用实例: https://blog.csdn.net/baidu_21088863/article/details/77802758
- Oracle如何实现多个字段去重: https://blog.csdn.net/hustwht/article/details/52181654
- oracle中使用sql查询时字段为空则赋默认值:oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值
oracle 函数介绍之nvl
函数声明:nvl(col,val)
说明:当col为空时取val作为返回值,当col不为空时取col值。
用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上nvl就不会了。
经典用法:
通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值
例如:
select nvl(sum(t.字段),1) from table t
就表示如果sum(t.字段) = NULL 就返回 1
另一个有关的有用方法
declare i integer
select nvl(sum(t.字段),1) into i from table t 这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1
orcale中:
select nvl(rulescore,0) from zwjc_graderule where rulecode=‘FWTD’; 如果记录中不存在rulecode ='FWTD’的数据.则查不出数据.
select nvl(rulescore,0) into rule_score from zwjc_graderule where rulecode=‘FWTD’;会报查不到数据的错
select nvl(sum(rulescore),0) from zwjc_graderule where rulecode=‘FWTD’; 如果记录中不存在rulecode ='FWTD’的数据.还是可以得到一行列名为nvl(rulescore,0),值为0的数据.
select nvl(sum(rulescore),0) into rule_score from zwjc_graderule where rulecode=‘FWTD’; 不会报错
oracle 函数介绍之decode()
decode()函数简介:
主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);
使用方法:
Select decode(columnname,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)
From talbename
Where …
其中columnname为要选择的table中所定义的column,
·含义解释:
decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)的理解如下:
if (条件值1)
then
return(翻译值1)
elsif (条件值2)
then
return(翻译值2)
…
elsif (条件==值n)
then
return(翻译值n)
else
return(缺省值)
end if - 表中记录条数大于1的记录:
select * from online_payment.NETPAY_MER_ONLPAY where channel_code in(‘GFUPZF’,‘UPWXZF’,‘UPZFBZF’) and STATUS = ‘0’ and merch_id in (select merch_id from online_payment.NETPAY_MER_ONLPAY
where /*ORGAN_ID = ‘T88888888888888’ and /channel_code in(‘GFUPZF’,‘UPWXZF’,‘UPZFBZF’) and STATUS = ‘0’ group by merch_id having count()=3) - 查询表中 某个列 中的列值出现频率最高的列值
select merch_id from ( select merch_id,dense_rank() over(order by cnt desc) as rnk from(select merch_id,count(*) as cnt from netpay_bill where settle_date=‘20200326’ group by merch_id ) )
where rnk=1; - Oracle sql 语句:存在则更新,不存在则插入
8.PLSQL 如何将多个insert语句一起运行
oracle常用操作
最新推荐文章于 2024-01-10 20:08:14 发布