从MySQL数据库中删除字符

时间:2013-01-04 17:35:47

标签: php mysql

抱歉 - 我是一个完整的新手,所以任何帮助都非常感谢。

我在mysql数据库的一个列(texty3)中有大约30,000个条目,需要删除某些字符/单词:

具体地,

任何短于3个字符的单词。 任何非上限词。 任何非字母数字的东西。

我想知道是否有一个mysql命令吗?

我有人写了一个脚本,以便将来通过php上传,看起来像这样,

function getmtext($str) {
    $text = '';
    $words = str_word_count($str, 1);
    foreach ($words as $word) {
        if ($word[0] >= 'A' && $word[0] <= 'Z') 
            if (strlen($word)>3) 
                $text .= $word.' ';
    }
    return $text;
}

但我不知道如何编辑已存在的条目。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您可以使用相同的脚本来更新SQL中的条目,没有办法(我知道)可以按照您的要求使用纯SQL。

那就是说你可以从数据库中检索数据(使用mysql函数),修改信息并将其返回到数据库。

为了论证,如果您在本地拥有数据库,名为test且没有以root身份登录的密码,您可以使用以下内容:

function getmtext($str) {
    $text = '';
    $words = str_word_count($str, 1);
    foreach ($words as $word) {
        if ($word[0] >= 'A' && $word[0] <= 'Z') 
        if (strlen($word)>3) 
            $text .= $word.' ';
    }
    return $text;
}

//set the database parameters
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "test";

//create the database connection
$dbConn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error());
mysql_select_db($dbName) or die('Cannot select database. ' . mysql_error());

//sql to get all texty3 rows from table
$sql = "select id, texty3 from testtable";
$query = mysql_query($sql); //run the sql
while($result = mysql_fetch_assoc($query)) { //loop through each row
     $rowId = $result['id'];
     $text = $result['texty3'];
     $cleansedText = getmtext($text);
     mysql_query("update testtable set texty3 = '$cleansedText' where id = '$rowId';");
}

这将通过数据库并使用该函数删除与函数中定义的参数不匹配的所有单词。 (对不起,我无法在分钟检查此代码,但它应该是正确的或至少接近)