SQL 喜欢 % 删除记录?

SQL like % delete records?

我有删除查询,该查询应删除所有不匹配 01 或 10 的记录。这两个数字位于用短划线分隔的单词前面。看起来像这样:

Column_1
01-Test1
01-Test2
10-Test3
10-Test4

我的查询应该删除所有与单词前面的 01 和 10 不匹配的记录。这是我的查询:

DELETE FROM MyRecords
WHERE Column_1 NOT LIKE '01%' OR Column_1 NOT LIKE '10%'

出于某种原因,上面的查询删除了上面列表中的所有记录。我不确定我在哪里遗漏了删除所有记录的内容。如果有人看到问题,请告诉我。谢谢。

将您的 OR 更改为 AND

DELETE FROM MyRecords
WHERE Column_1 NOT LIKE '01%' AND Column_1 NOT LIKE '10%'

另一种选择

DELETE FROM MyRecords
WHERE Left(Column_1,2)  NOT IN ('01','10')

(更具可读性但不会使用索引)

首先确定要保留哪些记录('01%' & '10%'),

Select * MyRecords WHERE (Column_1 LIKE '01%' OR Column_1 LIKE '10%');

然后在条件前加个NOT,改成delete。

DELETE FROM MyRecords WHERE NOT (Column_1 LIKE '01%' OR Column_1 LIKE '10%');

这使得检查您要删除的记录变得非常容易。