You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite+Python:将左连接查询返回的NULL替换为'default'字符串

SQLite左连接后替换NULL值为'default'的解决方案

你遇到的问题是因为直接使用SELECT *时,左连接无匹配返回的NULL值不会被COALESCE处理,必须显式对目标列应用函数。以下是两种可行的解决方法:

方法一:SQL层面处理(推荐)

修改查询语句,显式指定需要替换的列,对HQITS_PRJ_TAGS表的列使用COALESCE函数替换NULL为'default':

SELECT 
    TRANSACTIONS.*,
    COALESCE(HQITS_PRJ_TAGS.project_name, 'default') AS project_name,
    COALESCE(HQITS_PRJ_TAGS.client_name, 'default') AS client_name,
    COALESCE(HQITS_PRJ_TAGS.project_tag, 'default') AS project_tag
FROM TRANSACTIONS
LEFT JOIN HQITS_PRJ_TAGS ON UPPER(TRANSACTIONS.tags) = UPPER(HQITS_PRJ_TAGS.project_tag)
WHERE TRANSACTIONS.id = ?

这样查询返回的project_name、client_name、project_tag列,在无匹配时会直接返回'default',无需后续Python处理。

方法二:Python层面处理

如果不想修改SQL语句,可以在获取结果后遍历字典,将NULL值替换为'default':

# 假设cursor是你的SQLite游标对象,transaction_id是查询参数
cursor.execute(你的原SQL语句, (transaction_id,))
results = cursor.fetchall()

# 处理结果中的None值
processed_rows = []
for row in results:
    processed_row = {k: v if v is not None else 'default' for k, v in row.items()}
    processed_rows.append(processed_row)

这种方式适合需要动态调整默认值,或者列较多不想逐个写SQL的场景。

内容的提问来源于stack exchange,提问作者64rl0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:57:41