根据字段值的子字符串删除mySQl中的行?

时间:2014-08-13 08:24:13

标签: mysql sql substring where-clause sql-delete

我有一张14,000,000(1400万)行的表格。我刚刚意识到我可以通过删除特定字段的第一个和第二个字符为23,24,25,54,55或56的行来显着减少此数字。

我正在思考以下几点:

DELETE FROM tablename WHERE Substring of field in column LIKE 24 OR 25 OR 26.... Etc

谢谢,

LazyTotoro: - )

3 个答案:

答案 0 :(得分:3)

如果您确定要查找哪些字符串,则可以执行以下操作:

delete
from tablename
where left(fieldname,2) in ('23','24','25','54','55','56')

left提供了一个方便的解决方案,因为您正在寻找前2个字符。如果您希望在两端之间获得子字符串,则可以使用substring语法substring(fieldname, startingposition, length)

答案 1 :(得分:1)

我认为你可以使用SUBSTRING()函数。

http://www.w3resource.com/mysql/string-functions/mysql-substring-function.php

例如,如果你使用SUBTRING(str,1,2),它将从字符串的第一个位置开始返回2个字符,所以如果你有SUBSTRING(" 123456",1,2) ,它将返回" 12"。

所以你会:

DELETE FROM tablename WHERE SUBSTRING(field, 1, 2) IN (24,25,26)

答案 2 :(得分:0)

MySQL提供SUBSTR功能。