数据库中单目运算符具体指什么?
- 内容介绍
- 文章标签
- 相关推荐
单目运算符概述——你到底在干什么?怎么说呢,
在数据库查询和脚本中。单目运算符只需要一个操作数就能完成计算或判断。它们的出现频率极高,却常常让新手产生以下痛点:
- 不清楚哪些符号是单目而不是双目导致语法错误。
- 不同数据库对同一符号的实现细节略有差异,使用时容易踩坑。
- 单目运算符的优先级普遍很高,忘记加括号会导致意料之外的结果。
- 空值判断、字符串拼接、位操作等场景混用时往往不知该选哪个运算符最合适。
下面把常见的单目运算符逐一拆解。并给出实际 SQL 示例,方便你定位并解决上述痛点。其实,
1️⃣ 逻辑非
作用:将布尔值取反。true → false,false → true
常见写法:
-
NOT condition -
!condition
示例:
SELECT * FROM users WHERE NOT is_active;-- 等价于 WHERE is_active = FALSE -- 或者 SELECT * FROM orders WHERE!paid,-- 在 MySQL 中等价于 NOT paid
2️⃣ 按位取反
作用:对二进制位逐位取反。0 变 1,1 变 0,
-- 假设 flag 为整数列 SELECT id。flag,~flag AS inverted_flag FROM permissions;
3️⃣ 自增 / 自减——仅限支持的
作用:在表达式中把数值加 1 或减 1。大多数标准 SQL 不支持,但 MySQL 的存储过程或某些可以使用。
// MySQL 示例 SET @cnt = @cnt + 1;-- 等价于 ++@cnt SET @cnt = @cnt - 1;-- 等价于 --@cnt
4️⃣ 正负号——一元正负号与数学意义相同
-
"+":保持数值正号。 -
"-":返回数值的相反数。
// 将正数转为负数 SELECT -price AS negative_price FROM products; // 强制正数显示正号 SELECT +score AS positive_score FROM rankings;
5️⃣ 空值检查运算符——别再写 = NULL
作用:专门用于判断字段是否为 null
// 判断字段为空 SELECT * FROM employees WHERE termination_date IS NULL;// 判断字段非空 SELECT * FROM employees WHERE termination_date IS NOT NULL;
6️⃣ 类型转换运算符——防止隐式转换带来的错误
-
CAST -
::datatype
// 将字符串转为整数后比较一下 SELECT * FROM sales WHERE CAST> 1000;-- PostgreSQL 写法 SELECT * FROM sales WHERE order_id::INT> 1000;
7️⃣ 字符串连接运算符——不同数据库不统一!别踩坑,老实说,
-
'Hello' + 'World'—SQL Server、MySQL。 -
'Hello' || 'World'—Oracle、PostgreSQL 标准写法。Mysql 示例:
// MySQL 使用 CONCAT 更安全,也可使用 + SELECT CONCAT AS full_name FROM contacts;-- 或者 SELECT first_name + ' ' + last_name AS full_name FROM contacts;// SQL Server 使用 + SELECT first_name + ' ' + last_name AS full_name FROM contacts;// PostgreSQL 使用 || SELECT first_name || ' ' || last_name AS full_name FROM contacts;
使用单目运算符的常用方法 & 常见坑点排查表 🚀
Pain Point # 检查要点 误把双目当成单目导致语法错误 确认运算符左侧是否只有一个操作数;若需要两个,请改为双目形式 )。 不同 DBMS 对同一字符解释不同 查阅对应数据库手册: - MySQL/SQL Server 用 “+” 拼接 - Oracle/PostgreSQL 用 “||”。必要时改用标准函数 /.空值判断误用 “= NULL” 导致永假结果 始终使用 ;若要同时过滤空值与非空值,可写.忽视优先级导致表达式计算错误 单目运算符优先级最高;若想先执行乘幂,请加括号: - = -25;^2 = 25..类型不匹配报错:比如对字符列使用位取反 先进行显式转换: CAST ,再使用位运算。自增/自减只能在特定环境下使用,直接写会报错 确认你的 DBMS 是否支持 ++/--;若不支持,用传统方式: . 忘记处理负号导致日期计算错误 ) ) 确保负号紧贴数字或表达式。并加括号避免歧义: CUSTOMERORDERDATE - INTERVAL '1 day'。 逻辑非与位非混淆导致结果相反
*以上内容已针对常见痛点调整一下排版,如有遗漏请自行补充对应数据库文档。
单目运算符概述——你到底在干什么?怎么说呢,
在数据库查询和脚本中。单目运算符只需要一个操作数就能完成计算或判断。它们的出现频率极高,却常常让新手产生以下痛点:
- 不清楚哪些符号是单目而不是双目导致语法错误。
- 不同数据库对同一符号的实现细节略有差异,使用时容易踩坑。
- 单目运算符的优先级普遍很高,忘记加括号会导致意料之外的结果。
- 空值判断、字符串拼接、位操作等场景混用时往往不知该选哪个运算符最合适。
下面把常见的单目运算符逐一拆解。并给出实际 SQL 示例,方便你定位并解决上述痛点。其实,
1️⃣ 逻辑非
作用:将布尔值取反。true → false,false → true
常见写法:
-
NOT condition -
!condition
示例:
SELECT * FROM users WHERE NOT is_active;-- 等价于 WHERE is_active = FALSE -- 或者 SELECT * FROM orders WHERE!paid,-- 在 MySQL 中等价于 NOT paid
2️⃣ 按位取反
作用:对二进制位逐位取反。0 变 1,1 变 0,
-- 假设 flag 为整数列 SELECT id。flag,~flag AS inverted_flag FROM permissions;
3️⃣ 自增 / 自减——仅限支持的
作用:在表达式中把数值加 1 或减 1。大多数标准 SQL 不支持,但 MySQL 的存储过程或某些可以使用。
// MySQL 示例 SET @cnt = @cnt + 1;-- 等价于 ++@cnt SET @cnt = @cnt - 1;-- 等价于 --@cnt
4️⃣ 正负号——一元正负号与数学意义相同
-
"+":保持数值正号。 -
"-":返回数值的相反数。
// 将正数转为负数 SELECT -price AS negative_price FROM products; // 强制正数显示正号 SELECT +score AS positive_score FROM rankings;
5️⃣ 空值检查运算符——别再写 = NULL
作用:专门用于判断字段是否为 null
// 判断字段为空 SELECT * FROM employees WHERE termination_date IS NULL;// 判断字段非空 SELECT * FROM employees WHERE termination_date IS NOT NULL;
6️⃣ 类型转换运算符——防止隐式转换带来的错误
-
CAST -
::datatype
// 将字符串转为整数后比较一下 SELECT * FROM sales WHERE CAST> 1000;-- PostgreSQL 写法 SELECT * FROM sales WHERE order_id::INT> 1000;
7️⃣ 字符串连接运算符——不同数据库不统一!别踩坑,老实说,
-
'Hello' + 'World'—SQL Server、MySQL。 -
'Hello' || 'World'—Oracle、PostgreSQL 标准写法。Mysql 示例:
// MySQL 使用 CONCAT 更安全,也可使用 + SELECT CONCAT AS full_name FROM contacts;-- 或者 SELECT first_name + ' ' + last_name AS full_name FROM contacts;// SQL Server 使用 + SELECT first_name + ' ' + last_name AS full_name FROM contacts;// PostgreSQL 使用 || SELECT first_name || ' ' || last_name AS full_name FROM contacts;
使用单目运算符的常用方法 & 常见坑点排查表 🚀
Pain Point # 检查要点 误把双目当成单目导致语法错误 确认运算符左侧是否只有一个操作数;若需要两个,请改为双目形式 )。 不同 DBMS 对同一字符解释不同 查阅对应数据库手册: - MySQL/SQL Server 用 “+” 拼接 - Oracle/PostgreSQL 用 “||”。必要时改用标准函数 /.空值判断误用 “= NULL” 导致永假结果 始终使用 ;若要同时过滤空值与非空值,可写.忽视优先级导致表达式计算错误 单目运算符优先级最高;若想先执行乘幂,请加括号: - = -25;^2 = 25..类型不匹配报错:比如对字符列使用位取反 先进行显式转换: CAST ,再使用位运算。自增/自减只能在特定环境下使用,直接写会报错 确认你的 DBMS 是否支持 ++/--;若不支持,用传统方式: . 忘记处理负号导致日期计算错误 ) ) 确保负号紧贴数字或表达式。并加括号避免歧义: CUSTOMERORDERDATE - INTERVAL '1 day'。 逻辑非与位非混淆导致结果相反
*以上内容已针对常见痛点调整一下排版,如有遗漏请自行补充对应数据库文档。

