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

SQL Server 2014:如何排除不包含特定值的记录?

嘿,针对你在SQL Server 2014里要排除不包含特定值的记录这个需求,我结合你给出的临时表结构,整理了几种实用的解决方案,直接就能套用:

首先先模拟你的临时表(方便你测试验证):

-- 创建临时表并插入示例数据
CREATE TABLE #TempTransactions (
    Account_No VARCHAR(20),
    Customer_Name VARCHAR(50),
    Invoice_No VARCHAR(20),
    Amount DECIMAL(10,2),
    Reason_Comment VARCHAR(100),
    Trans_Code INT
);

INSERT INTO #TempTransactions VALUES
('12345678', 'John Doe', 'A23782998', 326.28, 'Payment', 2),
('12345678', 'John Doe', 'A23783001', 150.00, 'Refund', 3),
('98765432', 'Jane Smith', 'B45678901', 450.75, 'Partial Payment', 2);

1. 排除不包含精确特定值的记录

如果你需要保留某个字段完全匹配特定值的记录(也就是排除所有不匹配的),比如只保留Trans_Code为2的记录:

-- 方式1:直接筛选匹配值(等价于排除不匹配的)
SELECT *
FROM #TempTransactions
WHERE Trans_Code = 2;

-- 方式2:用NOT反向筛选(效果和上面一致,看你习惯哪种写法)
SELECT *
FROM #TempTransactions
WHERE NOT Trans_Code <> 2;

2. 排除不包含模糊关键词的记录

如果要基于字符串字段的部分内容筛选(比如保留Reason_Comment里包含"Pay"的记录),用LIKE操作符:

-- 保留包含"Pay"关键词的记录(排除不包含的)
SELECT *
FROM #TempTransactions
WHERE Reason_Comment LIKE '%Pay%';

注意:%是通配符,代表任意长度的字符,如果你要匹配开头或结尾的关键词,可以调整为'Pay%'或'%Pay'

3. 排除不包含多个特定值的记录

如果需要保留字段匹配多个值中任意一个的记录,用IN子句:

-- 保留Trans_Code为2或3的记录(排除其他值)
SELECT *
FROM #TempTransactions
WHERE Trans_Code IN (2, 3);

额外注意:处理NULL值

如果你的字段可能存在NULL(比如部分记录的Trans_Code为空),要明确NULL是否属于"不包含特定值"的范围:

  • 如果要排除NULL(只保留匹配特定值的):直接用上面的语句即可,因为NULL和任何值的比较结果都是UNKNOWN,会被自动排除
  • 如果要保留NULL和匹配特定值的记录:
SELECT *
FROM #TempTransactions
WHERE Trans_Code = 2 OR Trans_Code IS NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:47:37