NULLIF 函数用于在两个表达式相等时返回 NULL,否则返回第一个表达式。其语法为:
NULLIF(expr1, expr2)
其中:
* expr1:需要比较的第一个表达式
* expr2:需要比较的第二个表达式
用法
NULLIF 函数主要用于过滤掉结果集中值为 NULL 的行。语法如下:
SELECT * FROM table_name WHERE NOT NULLIF(column_name, 'value')
例如,要从 "users" 表中选择所有没有空 "email" 字段的行,可以使用以下查询:
SELECT * FROM users WHERE NOT NULLIF(email, '')
或者,要从 "orders" 表中选择所有不为 NULL 的 "total_amount" 字段的行,可以使用以下查询:
SELECT * FROM orders WHERE NOT NULLIF(total_amount, NULL)
其他用途
除了过滤 NULL 值外,NULLIF 函数还可用于以下用途:
* 比较值:通过使用表达式比较,可以轻松识别相等或不相等的值。
* 创建缺省值:如果表达式为空,NULLIF 可以返回一个缺省值,例如 "0" 或 "N/A"。
* 替换空字符串:NULLIF 可用于将空字符串替换为其他值,例如 "Unknown" 或 "N/A"。
示例
以下是一些使用 NULLIF 函数的示例:
* 从 "products" 表中选择名称不为空的产品:
SELECT product_name FROM products WHERE NOT NULLIF(product_name, '')
* 将为 NULL 的 "amount" 字段替换为 "0":
UPDATE orders SET amount = NULLIF(amount, NULL) OR 0
* 比较两个字符串并返回相等或不相等的值:
SELECT CASE WHEN NULLIF(str1, str2) IS NULL THEN 'Equal' ELSE 'Not Equal' END AS comparison
注意事项
使用 NULLIF 函数时需要注意以下几点:
* 两个表达式的数据类型必须相同。
* NULLIF 不会对表达式进行类型转换。
* NULLIF 对于过滤大数据集可能效率较低。