写点什么

YashanDB 比较运算符

作者:YashanDB
  • 2025-04-01
    广东
  • 本文字数:1832 字

    阅读完需:约 6 分钟

本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C/SQL%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C/%E8%BF%90%E7%AE%97%E7%AC%A6/%E6%AF%94%E8%BE%83%E8%BF%90%E7%AE%97%E7%AC%A6.html


YashanDB 提供如下比较运算符:



比较运算符在 SQL 语法中的详细运用请参考condition条件子句描述。

运算优先级



从高到低的运算优先级为:


  • =、!= 或 <>、>、>=、<、<=

  • [NOT] IN、IS [NOT] NULL、[NOT] LIKE

  • [NOT] BETWEEN AND


可以使用双括号()来调整想达到的运算优先级。

数据类型



在执行=、!= 或 <>、>、>=、<、<=比较符运算时,如下数据类型可能会参与到比较运算中:


  • 数值型

  • 字符型

  • 日期时间型

  • 布尔型

  • RAW

类型转换

如果比较符两边的数据类型不一致,YashanDB 将通过隐式数据转换,将其中一边的数据类型向另一边统一,统一原则为:


  • 数值型最小提升规则:按 TINYINT->SMALLINT->INT->BIGINT->NUMBER->FLOAT->DOUBLE 顺序向后统一。

  • BIT 型数据与 BIGINT、NUMBER 型数据进行运算时,将会向 BIGINT/NUMBER 型统一。

  • 字符型数据与其他类型进行运算时,将会向其他类型统一。

  • DATE 型数据与 TIMESTAMP 型数据进行运算时,将会向 TIMESTAMP 型统一。

  • TIME 型数据与 DS_INTERVAL 型数据进行运算时,将会向 DS_INTERVAL 型统一。

  • 布尔型数据与数值型数据进行运算时,将会向数值型统一。

(1)数值型与布尔型统一规则

行列标题格为参与=、!= 或 <>、>、>=、<、<=比较符运算的数据类型;内容单元格为统一后的数据类型;–表示不支持两种数据类型参与比较运算。


(2)数值型、布尔型与字符型统一规则

行列标题格为参与=、!= 或 <>、>、>=、<、<=比较符运算的数据类型;内容单元格为统一后的数据类型,其中(1)表示采用上面(1)数值型与布尔型统一规则;–表示不支持两种数据类型参与比较运算。



Note

字符型与字符型的比较,执行的是大小写敏感的字符串比较,详细描述请参考字符型文档。

(3)数值型、布尔型、字符型与日期时间型统一规则

行列标题格为参与=、!= 或 <>、>、>=、<、<=比较符运算的数据类型;内容单元格为统一后的数据类型,其中(2)表示采用上面(2)数值型、布尔型与字符型统一规则;–表示不支持两种数据类型参与比较运算。


| 数据


类型 | 数值型 | 字符型 | BOOLEAN | DATE | TIMESTAMP | YM_


INTERVAL | DS_


INTERVAL | TIME || --- | --- | --- | --- | --- | --- | --- | --- | --- || 数值型 | (2) | (2) | (2) | -- | -- | -- | -- | -- || 字符型 | (2) | (2) | (2) | DATE | TIMESTAMP | YM_


INTERVAL | DS_


INTERVAL | TIME || BOOLEAN | (2) | (2) | (2) | -- | -- | -- | -- | -- || DATE | -- | DATE | -- | DATE | TIMESTAMP | -- | -- | -- || TIMESTAMP | -- | TIMESTAMP | -- | TIMESTAMP | TIMESTAMP | -- | -- | -- || YM_


INTERVAL | -- | YM_


INTERVAL | -- | -- | -- | YM_


INTERVAL | -- | -- || DS_


INTERVAL | -- | DS_


INTERVAL | -- | -- | -- | -- | DS_


INTERVAL | DS_


INTERVAL || TIME | -- | TIME | -- | -- | -- | -- | DS_


INTERVAL | TIME |


示例



SELECT SYSDATE FROM DUAL WHERE NULL IN (1,NULL);SYSDATE
SELECT SYSDATE FROM DUAL WHERE 1 IN (1,NULL);SYSDATE
2021-06-08 10:05:53 SELECT SYSDATE FROM DUAL WHERE 1 IN (2,NULL);SYSDATE

SELECT 1 FROM dualWHERE '0'<4; 1
1 SELECT 1 FROM dualWHERE true LIKE 'true%'; 1
1
复制代码


Copied!

(4)RAW 类型与字符型统一规则

RAW 类型只可与自身或字符型进行比较,规则如下:


(行列标题格为参与=、!= 或 <>、>、>=、<、<=比较符运算的数据类型;内容单元格为统一后的数据类型。)



(4)udt 类型比较统一规则

  • OBJECT 类型默认只支持等于、不等于运算。已创建方法的 OBJECT 类型支持等于、不等于、大于、大于等于、小于、小于等于的运算,且根据其方法的结果进行比较。

  • VARRAY 类型不支持等于、不等于、大于、大于等于、小于、小于等于运算。

  • TABLE 类型只支持等于、不等于运算。

  • 当 UDT 类型嵌套 UDT 类型时,目前不支持 TABLE 类型、未创建方法的 OBJECT 的比较,其他 UDT 类型嵌套时每一层 UDT 类型都需遵循比较规则。

  • 支持等于、不等于运算的类型,也支持[NOT] IN 运算。

  • 所有 UDT 类型不支持[NOT] LIKE 运算。

  • 仅已创建方法的 OBJECT 类型支持[NOT] BETWEEN AND。

  • 所有 UDT 类型支持 IS [NOT] NULL 运算。

发布于: 4 小时前阅读数: 7
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB比较运算符_数据库_YashanDB_InfoQ写作社区