动态 SQL 拼接使用 OR 运算符 - 两种方法详解
在动态 SQL 中使用 OR 运算符可以通过以下方式实现:
- 使用字符串拼接:
query = 'SELECT * FROM table WHERE '
conditions = []
value1 = 'value1'
value2 = 'value2'
if value1:
conditions.append('column1 = '{}''.format(value1))
if value2:
conditions.append('column2 = '{}''.format(value2))
query += ' OR '.join(conditions)
这样,如果value1和value2都有值,生成的 SQL 语句会是SELECT * FROM table WHERE column1 = 'value1' OR column2 = 'value2'。
- 使用参数绑定:
query = 'SELECT * FROM table WHERE '
conditions = []
value1 = 'value1'
value2 = 'value2'
if value1:
conditions.append('column1 = %s')
if value2:
conditions.append('column2 = %s')
query += ' OR '.join(conditions)
params = []
if value1:
params.append(value1)
if value2:
params.append(value2)
cursor.execute(query, params)
这种方式可以防止 SQL 注入攻击,并且可以处理参数化查询中的参数值。
无论是哪种方式,都可以根据需要灵活地拼接 OR 条件。
原文地址: https://www.cveoy.top/t/topic/qmAu 著作权归作者所有。请勿转载和采集!