像%删除记录的SQL?

时间:2016-12-12 15:16:42

标签: sql-server sql-server-2008 tsql sql-delete

我删除的查询应该删除所有与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%'

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

2 个答案:

答案 0 :(得分:6)

将您的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')

(稍微可读但不会使用索引)

答案 1 :(得分:0)

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

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

然后在条件前放置NOT并将其更改为删除。

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

这样可以很容易地检查您要删除的记录。