如何做好线上推广,全能优化型网站,wordpress 主题 引入js,做家教有什么好的资料网站PostgreSQL函数与操作符-比较函数和操作符
PostgreSQL中的比较函数和操作符
PostgreSQL中的比较函数和操作符用于比较两个表达式的值。它们的作用是确定表达式的值是否满足某种条件#xff0c;例如等于、大于、小于等。
比较函数是一个接受两个参数的函数#xff0c;返回一…PostgreSQL函数与操作符-比较函数和操作符
PostgreSQL中的比较函数和操作符
PostgreSQL中的比较函数和操作符用于比较两个表达式的值。它们的作用是确定表达式的值是否满足某种条件例如等于、大于、小于等。
比较函数是一个接受两个参数的函数返回一个布尔值表示两个参数是否满足某种条件。例如equal()函数用于判断两个参数是否相等greater than()函数用于判断第一个参数是否大于第二个参数。
比较操作符是一种特殊的函数使用符号表示例如表示等于表示大于表示小于等。比较操作符可以直接应用于表达式返回一个布尔值。
比较函数和操作符在使用上有所不同。比较函数可以用于任意类型的表达式而比较操作符只能用于特定类型的表达式。此外比较函数更加灵活可以自定义比较规则而比较操作符的比较规则是固定的。
在使用比较函数和操作符时可以通过组合多个比较条件来构建复杂的比较表达式。例如可以使用AND、OR等逻辑操作符来连接多个比较条件以实现更灵活的比较。
总的来说比较函数和操作符在比较表达式的值时起到了关键作用它们可以用于判断两个值的大小关系、相等关系等并且可以根据需要进行灵活的组合和扩展。
PostgreSQL常见的比较操作符都可用如下表所示。
操作符描述小于大于小于等于大于等于等于 or !不等于
比较操作符可以用于所有可以比较的数据类型。所有比较操作符都是双目操作符它们返回boolean类型类似于1 2 3的表达式是非法的因为没有操作符可以比较一个布尔值和3。
如下表所示也有一些比较谓词。它们的行为和操作符很像但是具有 SQL 标准所要求的特殊语法。
谓词描述a BETWEEN x AND y在x和y之间a NOT BETWEEN x AND y不在x和y之间a BETWEEN SYMMETRIC x AND y在对比较值排序后位于x和y之间a NOT BETWEEN SYMMETRIC x AND y在对比较值排序后不位于x和y之间a IS DISTINCT FROM b不等于空值被当做一个普通值a IS NOT DISTINCT FROM b等于空值被当做一个普通值expressionIS NULLexpression IS NOT NULL不是空值expression ISNULL是空值非标准语法expression NOTNULL不是空值非标准语法boolean_expression IS TRUE为真boolean_expression IS NOT TRUE为假或未知boolean_expression IS FALSE为假boolean_expression IS NOT FALSE为真或者未知boolean_expression IS UNKNOWN值为未知boolean_expression IS NOT UNKNOWN为真或者为假
ETWEEN谓词可以简化范围测试
a BETWEEN x AND y等效于
a x AND a y注意BETWEEN认为终点值是包含在范围内的。 NOT BETWEEN可以做相反比较
a NOT BETWEEN x AND y等效于
a x OR a yBETWEEN SYMMETRIC和BETWEEN相似不过BETWEEN SYMMETRIC不要求AND左边的参数小于或等于右边的参数。如果左参数不是小于等于右参数这两个参数会自动被交换这样总是会应用一个非空范围。
当有一个输入为空时普通的比较操作符会得到空表示“未知”而不是真或假。例如7 NULL得到空7 NULL也一样。如果这种行为不合适可以使用IS [ NOT ] DISTINCT FROM谓词
a IS DISTINCT FROM b
a IS NOT DISTINCT FROM b对于非空输入IS DISTINCT FROM和操作符一样。不过如果两个输入都为空它会返回假。而如果只有一个输入为空它会返回真。类似地IS NOT DISTINCT FROM对于非空输入的行为与相同但是当两个输入都为空时它返回真并且当只有一个输入为空时返回假。因此这些谓词实际上把空值当作一种普通数据值而不是“unknown”。
要检查一个值是否为空使用下面的谓词
expression IS NULL
expression IS NOT NULL或者等效但并不标准的谓词
expression ISNULL
expression NOTNULL不要写expression NULL因为NULL是不“等于”NULL的控制代表一个未知的值因此我们无法知道两个未知的数值是否相等。 提示有些应用可能要求表达式expression NULL在expression得出空值时返回真。我们强烈建议这样的应用修改成遵循 SQL 标准。但是如果这样修改不可能完成那么我们可以使用配置变量transform_null_equals。如果打开它PostgreSQL将把x NULL子句转换成x IS NULL。 如果expression是行值那么当行表达式本身为非空值或者行的所有域为非空时IS NULL为真。由于这种行为IS NULL和IS NOT NULL并不总是为行值表达式返回反转的结果特别是一个同时包含 NULL 和非空值的域将会对两种测试都返回假。在某些情况下写成row IS DISTINCT FROM NULL或者row IS NOT DISTINCT FROM NULL会更好它们只会检查整个行值是否为空而不需要在行的域上做额外的测试。
布尔值也可以使用下列谓词进行测试
boolean_expression IS TRUE
boolean_expression IS NOT TRUE
boolean_expression IS FALSE
boolean_expression IS NOT FALSE
boolean_expression IS UNKNOWN
boolean_expression IS NOT UNKNOWN这些谓词将总是返回真或假从来不返回空值即使操作数是空也如此。空值输入被当做逻辑值“未知”。 请注意实际上IS UNKNOWN和IS NOT UNKNOWN分别与IS NULL和IS NOT NULL相同 只是输入表达式必须是布尔类型。
如下表中所示也有一些比较相关的函数可用。
函数描述例子例子结果num_nonnulls(VARIADIC “any”)返回非空参数的数量num_nonnulls(1, NULL, 2)2num_nulls(VARIADIC “any”)返回空参数的数量num_nulls(1, NULL, 2)1