0

对不起 - 我是一个完全的新手,所以非常感谢任何帮助。

我在 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;
}

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

任何帮助表示赞赏!

4

1 回答 1

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';");
}

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

于 2013-01-04T17:52:25.350 回答