首页 > 数据库 >WHEN NOT MATCHED THEN语句在oracle中的用法

WHEN NOT MATCHED THEN语句在oracle中的用法

时间:2024-01-24 09:02:04浏览次数:33  
标签:table2 WHEN t2 t1 address oracle NULL id MATCHED

WHEN NOT MATCHED THEN

这是一个在某些数据库系统(如Oracle)中使用的特殊子句,用于处理左连接中的"未匹配"情况。当左连接的条件不满足时,这部分的代码会执行。在这种情况下,如果O.DCSHYBH的值在L中没有匹配项,那么将插入一个NULL值或默认值。

总的来说,这段代码执行了一个左连接操作,并根据指定的条件将数据从两个或多个表中合并到一起。

在 PostgreSQL 中,没有与 Oracle 中的 WHEN NOT MATCHED THEN 直接等价的语法。但你可以使用 LEFT JOIN 和 COALESCE 或 NULLIF 函数来达到类似的效果。

例如,考虑以下两个表:

CREATE TABLE table1 (id INT, name VARCHAR(50));
CREATE TABLE table2 (id INT, address VARCHAR(50));

 

如果你想从 table1 中的每一行查找与之匹配的 table2 中的地址,并当没有匹配时返回一个默认值或NULL,你可以这样做:

 
SELECT   
    t1.id,   
    t1.name,   
    COALESCE(t2.address, '默认地址') as address   
FROM   
    table1 t1   
LEFT JOIN   
    table2 t2 ON t1.id = t2.id;

 

这里,COALESCE 函数检查第一个参数的值。如果该值为NULL,则返回第二个参数的值。因此,如果 t2.address 为NULL(即没有匹配),则返回 '默认地址'。

另一种方法是使用 NULLIF 函数:

SELECT   
    t1.id,   
    t1.name,   
    t2.address || '(默认)' as address   
FROM   
    table1 t1   
LEFT JOIN   
    table2 t2 ON t1.id = t2.id;

这里,如果 t2.address 为NULL(即没有匹配),那么结果为 '(默认)'。

标签:table2,WHEN,t2,t1,address,oracle,NULL,id,MATCHED
From: https://www.cnblogs.com/zhipeng-wang/p/17983824

相关文章

  • Oracle 21c-PL/SQL连接远程数据库的方式
    1、方式一:使用’IP:端口‘直接链接2、方式二:配置Oracle数据库连接器(1)打开NetManager(2)配置Oracle数据库服务器信息(3)打开PL/SQL,输入用户名、密码;数据库输入框输入'(2)中第4页配置的服务名'即可......
  • ORACLE translate函数
     1.语法  2.用途   (1)translate的返回值,是将expr(源字符串)参数中,所有对应在from_string(源字符串中想要被替换的字符)参数中所出现的字符,均按from_string参数中在to_string(想要源字符串中被替换的对应目标字符)参数中对应的字符替换掉后的值。expre源字符串中有......
  • Discarded invalid param(s) "xxx" when navigating.路由params传值报错
    从VueRouter的2022-8-22更新后,无法使用name+params的方式进行传递,官方给出的说法是所以我采用了HistoryAPI的模式A组件import{useRouter}from"vue-router"letrouter=useRouter()constparams={title:'标题'}functiontoRouter(){router.push({name:......
  • [转帖]Oracle 12.2 新特性 | PDB不同字符集变更
    https://www.cnblogs.com/cqdba/p/8bef7c432b87807c0680d6791f427b09.html 在oracle12.1版本中,同一CDB中的所有PDB使用的都是相同的字符集,并且Plug-in时PDB也要和目标CDB相同字符集或者是子集,否则plug-in时会失败在PDB_PLUG_IN_VIOLATIONS视图提示,这样影响了PDB的迁移灵活......
  • [转帖]能使 Oracle 索引失效的六大限制条件
    Oracle索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反。例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是oracle索引失效造成的。oracle索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了索引,oracle......
  • [转帖]Oracle Exadata X10M 数据库一体机发布,树立 OLTP 数据库性能新标杆
    https://www.modb.pro/db/653936 2023年6月25日消息,Oracle公司继续以其专用的Exadata平台重新定义OLTP数据库性能。上周,该公司延续了这一传统,推出了第十二个Exadata平台,即OracleExadataX10M数据库一体机。X10M的设计目的只有一件事:比市场上任何其他产品更......
  • Oracle AWR报告自动生成异常
    监控平台收集不到wrh$_tablespace_space_usage表数据。awr报告没有任何快照信息。alter日志发现报错:SuspendingMMONslaveactionkewrmafsa_for82800seconds MMON进程trace文件报错如下:UnabletoscheduleaMMONslaveat:AutoFlushMain1Slaveactionhasbeen......
  • oracle提示错误1033,ora-1033
    oracle提示错误1033,ora-1033制造问题和解决问题 文章标签:oracle提示错误1033系统是winxp,使用Imp导入数据到用户user1的时候,关闭了cmd窗口,结果在删除user1的时候,出现了ora-1033错误。解决办法:>connect/assysdba>shutdown>startupmount>alterdatabaserecoverdataba......
  • Oracle Partition 分区详细总结
    选中sql得表名,右键查看,可以观察到tab页最后一项有个“分区”的字样。增加分区相当于在sql中增加过滤条件。类似partitionby函数groupby是分组函数,partitionby是分区函数(像sum()等是聚合函数),注意区分。表空间如下所示点击查看代码partitionbylist(PROD_NUM)(partitio......
  • Proxmox VE 8 试装Oracle 23c
    作者:田逸(formyz)Oracle当前的最新版本是23c,虽然官方网站下载不了它的正式版本,但是却提供了一个性能受限的免费版本“OracleDatabase23.3Free”(存储容量受限、内存使用受限)。这里就只好用这个免费的版本来做测试,免费的版本能正常部署,那么将来的正式版本的部署也不在话下。Oracle......