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%');
这使得检查您要删除的记录变得非常容易。
我有删除查询,该查询应删除所有不匹配 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%');
这使得检查您要删除的记录变得非常容易。