ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

胖头鱼的技术专栏-472 26ai新特性实战:无 FROM 子句的 SELECT 语句(20261003)

胖头鱼的技术专栏-472 26ai新特性实战:无 FROM 子句的 SELECT 语句(20261003) 数据库管理472期 2026-10-03胖头鱼的技术专栏-472 26ai新特性实战无 FROM 子句的 SELECT 语句20261003特性介绍语法介绍适用场景实战演示测试1简单表达式测试2SYSDATE, CURRENT_TIMESTAMP测试3UUID (RAWTOHEX(SYS_GUID))测试4算术与字符串操作测试5DATEDIFF测试6WITH 子句测试7CASE 表达式总结胖头鱼的技术专栏-472 26ai新特性实战无 FROM 子句的 SELECT 语句20261003作者胖头鱼的鱼缸尹海文 Oracle ACE Pro: Database PostgreSQL ACE 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVPITPUB认证专家 圈内拥有“总监”称号非著名社恐社交恐怖分子 全网同名胖头鱼的鱼缸 ITPUByhw1809 除授权转载并标明出处外均为“非法”抄袭特性介绍Oracle AI Database 23.26.1 引入了无 FROM 子句的 SELECT 语句支持允许开发者在不指定 FROM 子句的情况下执行 SELECT 查询。这与 PostgreSQL 和SQL Server 等数据库系统的行为保持一致方便跨平台迁移和日常使用。语法介绍SELECTexpression1,expression2,...[ASalias];SELECTfunction_call();SELECTstring literal;SELECT12;支持的操作算术运算SELECT 1 2;字符串操作SELECT ‘Hello’ || ’ ’ || ‘World’;系统函数SELECT SYSDATE, CURRENT_TIMESTAMP, USER;数学函数SELECT SQRT(16), ABS(-5), POWER(2, 10);日期函数SELECT SYSDATE 7, ADD_MONTHS(SYSDATE, 1);类型转换SELECT TO_CHAR(SYSDATE, ‘YYYY-MM-DD’);UUID 生成SELECT RAWTOHEX(SYS_GUID());条件表达式SELECT CASE WHEN 11 THEN ‘yes’ ELSE ‘no’ END;子查询因子化WITH cte AS (…) SELECT … FROM cte;行为细节无 FROM 的 SELECT 只返回一行结果类似 SELECT … FROM dual如果在无 FROM 的 SELECT 中引用表列会报错 ORA-00904可以与其他 SELECT 语句组合使用如作为子查询在 WITH 子句子查询因子化中也可以使用无 FROM 的 SELECT优势简化编写不再需要记住 FROM dual 的语法跨平台兼容与 PostgreSQL、SQL Server、MySQL 行为一致代码简洁减少模板代码提高可读性迁移友好从其他数据库迁移的应用无需修改这类查询适用场景快速计算在 SQL*Plus 或 SQLcl 中快速进行数学运算系统信息查询快速查看系统日期、时间、用户信息函数测试在不创建测试表的情况下测试函数返回值参数获取在 PL/SQL 中使用 SELECT INTO 前验证函数输出教学演示在培训环境中演示 SQL 表达式无需创建示例表应用开发在 ORM 或连接池中测试数据库连接和函数可用性实战演示同之前一样使用用户NFTEST已授权DB_DEVELOPER_ROLE角色测试操作均在NFTEST用户下执行。测试1简单表达式SELECTHello WorldASgreeting;SELECT12345ASsum_result;SELECT3.14159*10*10AScircle_area;测试2SYSDATE, CURRENT_TIMESTAMPSELECTSYSDATEASsystem_date,CURRENT_DATEAScurrent_date_val,CURRENT_TIMESTAMPAScurrent_ts,SYSTIMESTAMPASsystem_ts;测试3UUID (RAWTOHEX(SYS_GUID))SELECTRAWTOHEX(SYS_GUID())ASgenerated_uuid;测试4算术与字符串操作SELECT100*1.15ASprice_with_tax,SQRT(144)ASsquare_root,POWER(2,10)AStwo_to_tenth,ABS(-42)ASabsolute_value,MOD(17,5)ASremainder;SELECTOracle|| ||AI|| ||DatabaseASfull_name,UPPER(hello world)ASupper_case,LOWER(HELLO WORLD)ASlower_case,SUBSTR(Hello World,1,5)ASfirst_word,LENGTH(Hello World)ASchar_length;测试5DATEDIFFSELECTDATEDIFF(DAY,DATE2025-01-01,DATE2026-01-01)ASdays_in_year,DATEDIFF(MONTH,DATE2025-01-01,DATE2026-07-01)ASmonths_in_18,DATEDIFF(YEAR,DATE2000-01-01,DATE2026-01-01)ASyears_since_2000;SELECTDATEDIFF(DAY,TIMESTAMP2026-01-01 00:00:00,TIMESTAMP2026-12-31 23:59:59)ASdays_with_fraction;测试6WITH 子句WITHconstantsAS(SELECT1000ASbase_price,0.08AStax_rate,20ASshipping,SYSDATEAScalc_date)SELECTbase_price,base_price*tax_rateAStax_amount,shipping,base_price(base_price*tax_rate)shippingAStotal_price,calc_dateFROMconstants;测试7CASE 表达式SELECTCASEWHENDATEDIFF(DAY,DATE2026-01-01,SYSDATE)180THENSecond half of 2026ELSEFirst half of 2026ENDASperiod_label,TO_CHAR(SYSDATE,YYYY-MM-DD HH24:MI:SS)AScurrent_time;总结本期对 Oracle AI Database 26ai23.26.1 版本新引入的无 FROM 子句的 SELECT 语句进行了完整介绍与实战演示。老规矩知道写了些啥。
返回列表