短视频,自媒体,达人种草一站服务
这篇文章主要给大家介绍了关于PostgreSQL基础知识之SQL操作符实践的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PostgreSQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
前言
操作符是数据库具有的运算特性,对文本字符和一些标签字符的处理,使用操作符可以简化SQL代码,同时也可以节省开发时间和提高开发效率。
比较操作符
在PostgreSQL中,所有的数据类型都可以使用比较操作符,比较操作符运算结果返回一个布尔值。即 TRUE 或者 FALSE。比较操作符为双目操作符,因此被比较的两个值的数据类型必须是相同的数据类型或者在彼此之间可以进行隐式类型转换。在PostgreSQL中,提供的比较操作符有 > 、< 、<= 、>= 、= 、<> 或者 != 。在 PostgreSQL中,类似 a > b > c的操作是非法的,因为布尔值和数值之间无法做比较。
示例:
hrdb=# SELECT 2 > 1 AS result; result -------- t(1 row) hrdb=# SELECT 'a' = 'a' AS result; result -------- t(1 row) hrdb=# SELECT 'a' <> 'b' AS result; result -------- t(1 row) hrdb=# SELECT 'a' != 'b' AS result; result -------- t(1 row) hrdb=# SELECT '@' > '!' AS result; result -------- t(1 row) hrdb=# SELECT ascii('@'),ascii('!'); ascii | ascii -------+------- 64 | 33(1 row) hrdb=# SELECT '@' > 'a' AS result; result -------- f(1 row) hrdb=# SELECT ascii('@'),ascii('a'); ascii | ascii -------+------- 64 | 97
在PostgreSQL中,除了比较的操作符以外,还有比较的谓词。有如下。
hrdb=> --BETWEEN AND谓词,表示范围。用法为某个指定的字符是否在此之间 hrdb=> SELECT 5 BETWEEN 1 AND 6 AS result; result -------- t (1 row)
hrdb=> --上述等价于 hrdb=> SELECT 5 > 1 AND 5 < 6 AS result; result -------- t (1 row)
hrdb=> --NOT BETWEEN AND ,表示不在某个范围 hrdb=> SELECT 5 NOT BETWEEN 7 AND 10 AS result; result -------- t (1 row)
hrdb=> --BETWEEN SYMMETRIC AND,表示排序后比较 hrdb=> --该谓词的用法通常发生在BETWEEN AND之间出现倒序的情况 hrdb=> --如使用 SELECT 5 BETWEEN 10 AND 10; 将会返回FALSE hrdb=> --因此要想返回TRUE需要按照如下使用 hrdb=> SELECT 5 BETWEEN SYMMETRIC 10 AND 1 AS result; result -------- t (1 row)
hrdb=> --NOT BETWEEN SYMMETRIC AND与上述 BETWEEN SYMMETRIC AND 相反 hrdb=> --IS DISTINCT FROM 不等于,null 返回TRUE hrdb=> SELECT 'a' IS DISTINCT FROM 'b' AS result; result -------- t (1 row)
hrdb=> SELECT null IS DISTINCT FROM 'b' AS result; result -------- t (1 row)
hrdb=> --IS NOT DISTINCT FROM 等于,null返回FALSE hrdb=> SELECT 'a' IS NOT DISTINCT FROM 'b' AS result; result -------- f (1 row)
hrdb=> SELECT null IS NOT DISTINCT FROM 'b' AS result; result -------- f (1 row)
hrdb=> --IS NULL 判断为空 hrdb=> SELECT 'a' IS NULL AS result; result -------- f (1 row)
hrdb=> SELECT '' IS NULL AS result; result -------- f (1 row)
hrdb=> --IS NOT NULL 判断不为空 hrdb=> SELECT 'a' IS NOT NULL AS result; result -------- t (1 row)
hrdb=> SELECT '' IS NOT NULL AS result; result -------- t (1 row)
hrdb=> --ISNULL 判断为空 (非标准语法) hrdb=> --NOTNULL 判断不为空(非标准语法) hrdb=> SELECT 'a' ISNULL as result; result -------- f (1 row)
hrdb=> SELECT '' NOTNULL AS result; result -------- t (1 row)
hrdb=> --IS TRUE 判断是否为TRUE hrdb=> SELECT 'A' > 'B' IS TRUE AS result; result -------- f (1 row)
hrdb=> --IS NOT TRUE 判断是否为FALSE hrdb=> SELECT 'A' > 'B' IS NOT TRUE AS result; result -------- t (1 row)
hrdb=> --IS FALSE 判断是否为 FALSE hrdb=> SELECT 'A' > 'B' IS FALSE AS result; result -------- t (1 row)
hrdb=> --IS NOT FALSE 判断是否不为FALSE hrdb=> SELECT 'A' > 'B' IS NOT FALSE AS result; result -------- f (1 row) --IS UNKNOWN 未知 hrdb=> SELECT NULL IS UNKNOWN AS result; result -------- t --IS NOT UNKNOWN SELECT 'a' > 'b' IS NOT UNKNOWN AS result;
温馨提示
字符之间的比较通常使用ascii值比较大小。同时,UNKNOWN 和 NOT UNKNOWN 通常和IS NULL 和IS NOT NULL类似。在PostgreSQL中,还有比较函数, num_nonnulls(VARIADIC "any"),表示返回一个非空输入字符的总个数。num_nulls(VARIADIC "any"),表示返回一个null值的总个数。如下:
hrdb=> SELECT num_nonnulls(1,null,2) AS total_nonnulls; total_nonnulls ---------------- 2 (1 row)
hrdb=> SELECT num_nonnulls('PostgreSQL','MySQL','','null',null) AS total_nonnulls; total_nonnulls ---------------- 4 (1 row)
hrdb=> SELECT num_nulls(1,null,2) AS total_nulls; total_nulls ------------- 1 (1 row)
hrdb=> SELECT num_nulls('PostgreSQL','MySQL','','null',null) AS total_nulls; total_nulls ------------- 1
逻辑操作符
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|