GaussDB SQL基础语法示例:BOOLEAN表达式详解

GaussDB SQL基础语法示例:BOOLEAN表达式详解
BOOLEAN表达式是SQL中实现逻辑判断的核心工具,用于组合多个条件或处理真值判断。本文将结合GaussDB特性,通过实际场景解析其用法与最佳实践。

一、基础语法结构

  1. 简单条件组合
-- AND并列条件
SELECT * FROM employees 
WHERE department = 'IT' 
  AND salary > 10000;

-- OR选择条件
SELECT product_name 
FROM products 
WHERE category = 'Electronics' 
   OR stock_quantity < 50;

-- NOT取反条件
SELECT order_id 
FROM orders 
WHERE NOT order_status = 'CANCELLED';
  1. 组合逻辑运算
-- 三条件混合运算
SELECT customer_id 
FROM customers 
WHERE (age BETWEEN 25 AND 40) 
  AND (membership_level > 2) 
  OR is_vip_customer = TRUE;

二、进阶应用场景

  1. 动态条件过滤
-- 使用参数化布尔表达式
SELECT product_name, price 
FROM products 
WHERE 
  (category = 'Books' AND price < 50) 
  OR 
  (category = 'Electronics' AND price < 200)
  AND is_available = TRUE;
  1. JSON数据类型处理
-- 结合JSON字段的布尔判断
SELECT user_id, profile->>'is_active' as status 
FROM users 
WHERE profile->>'email_verified' = 'true' 
  AND (profile->>'is_subscribed')::BOOLEAN = TRUE;
  1. 子查询中的布尔逻辑
-- EXISTS子查询中的布尔表达式
SELECT order_id 
FROM orders o 
WHERE EXISTS (
  SELECT 1 
  FROM payments p 
  WHERE p.order_id = o.order_id 
    AND p.payment_status = 'SUCCESS'
);

三、特殊用法示例

  1. 与CASE表达式结合
SELECT 
    student_id,
    CASE 
        WHEN (math_score > 85 AND english_score > 85) THEN '双科优秀'
        WHEN (math_score > 90 OR english_score > 90) THEN '单科突出'
        ELSE '需加强'
    END AS evaluation
FROM exam_results;
  1. 布尔表达式排序
-- 优先显示活跃用户
SELECT user_id, last_login 
FROM users 
ORDER BY 
    is_active DESC,  -- TRUE值排在前
    last_login DESC;

四、关键注意事项

​​运算符优先级​​

NOT > AND > OR,复杂条件建议使用括号明确优先级:
-- 正确写法
WHERE (A OR B) AND C
​​NULL值处理​​
BOOLEAN字段可能包含NULL,需显式处理:
SELECT * 
FROM products 
WHERE is_featured = TRUE 
   OR is_featured IS NULL;  -- 包含未标记的情况
​​隐式类型转换​​
GaussDB支持字符串转布尔值('true'/'false'),但建议显式转换:
SELECT * 
FROM config 
WHERE enabled::BOOLEAN = TRUE;  -- 明确类型转换
​​性能优化​​
布尔字段建议创建索引:
CREATE INDEX idx_user_active ON users(is_active);

五、典型错误规避

错误示例:运算符优先级导致逻辑错误

SELECT * 
FROM orders 
WHERE shipped = TRUE OR paid = TRUE AND status = 'COMPLETED';

-- 正确写法(添加括号)
SELECT * 
FROM orders 
WHERE (shipped = TRUE OR paid = TRUE) 
  AND status = 'COMPLETED';

六、实战技巧

​​简化复杂条件​​
使用布尔代数简化逻辑:

-- 原始条件
WHERE (A AND B) OR (A AND C) 
-- 可简化为
WHERE A AND (B OR C)

​​动态查询构建​​
在应用程序中拼接布尔表达式时,注意防止SQL注入:

# Python示例(安全参数化)
query = """
    SELECT * FROM products 
    WHERE category = %s 
      AND price < %s
"""
cursor.execute(query, ('Electronics', 500))

通过灵活运用BOOLEAN表达式,可以显著提升SQL查询的表达能力和执行效率。

你可能感兴趣的:(gaussdb,sql,tensorflow,数据库)