【问题标题】:Removing a row in mySQl based on the substring of a field value?根据字段值的子字符串删除 mySQl 中的一行?
【发布时间】:2014-08-13 08:24:12
【问题描述】:

我有一个包含 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

谢谢,

懒惰的托托罗:-)

【问题讨论】:

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


    【解决方案1】:

    如果您确定要查找哪些字符串,您可以这样做:

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

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

    【讨论】:

    • 所以澄清一下:如果 'LEFT(fieldname,2)' 的值是 'pokemon','po' 会被选中?
    • 完全正确 - 它是最左边的 n 个字符。dev.mysql.com/doc/refman/5.0/en/…
    【解决方案2】:

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

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

    例如,如果您使用 SUBSTRING(str, 1, 2),它将返回从字符串的第一个位置开始的 2 个字符,因此如果您使用 SUBSTRING("123456", 1, 2),它将返回 " 12 英寸。

    所以你会:

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

    【讨论】:

      【解决方案3】:

      MySQL 提供了SUBSTR 函数。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-20
        相关资源
        最近更新 更多