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

如何筛选ToolID非空且DateIN为空的数据并发送汇总邮件?

实现筛选空DateIN且非空ToolID并发送邮件的方案

1. 数据筛选与变量存储

先通过SQL语句精准过滤符合条件的记录:

SELECT ToolID
FROM 你的表名
WHERE DateIN IS NULL 
  AND ToolID IS NOT NULL;

场景1:SQL Server(T-SQL)

将结果存入字符串变量(逗号分隔):

DECLARE @ToolIDs NVARCHAR(MAX) = '';

SELECT @ToolIDs = CONCAT(@ToolIDs, ',', ToolID)
FROM 你的表名
WHERE DateIN IS NULL 
  AND ToolID IS NOT NULL;

-- 移除开头多余的逗号
SET @ToolIDs = STUFF(@ToolIDs, 1, 1, '');

场景2:Python(结合数据库连接)

读取数据库并将ToolID存入列表:

import pyodbc

# 建立数据库连接
conn = pyodbc.connect('你的数据库连接字符串')
cursor = conn.cursor()

# 执行查询
cursor.execute("""
    SELECT ToolID
    FROM 你的表名
    WHERE DateIN IS NULL 
      AND ToolID IS NOT NULL
""")

# 将结果存入列表
tool_ids = [row[0] for row in cursor.fetchall()]

conn.close()

2. 发送包含ToolID的邮件

场景1:SQL Server发送邮件

使用内置存储过程sp_send_dbmail:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = '你的邮件配置文件',
    @recipients = '收件人邮箱@xxx.com',
    @subject = '待处理ToolID列表',
    @body = CONCAT('以下ToolID对应的DateIN为空:', @ToolIDs);

场景2:Python发送邮件

用smtplib库实现:

import smtplib
from email.mime.text import MIMEText

# 构造邮件内容
body = f"以下ToolID对应的DateIN为空:{'、'.join(map(str, tool_ids))}"
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = '待处理ToolID列表'
msg['From'] = '发件人邮箱@xxx.com'
msg['To'] = '收件人邮箱@xxx.com'

# 发送邮件
with smtplib.SMTP_SSL('smtp.xxx.com', 465) as server:
    server.login('发件人邮箱@xxx.com', '邮箱密码/授权码')
    server.send_message(msg)

关于你之前的IF语句问题

IF语句更适合单条记录的逻辑判断,而这里需要批量筛选记录。直接用WHERE子句批量过滤,再将结果聚合到变量中,是更高效的实现方式,无需逐条判断记录。

内容的提问来源于stack exchange,提问作者Keanan Dunn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:52:53