0

我在数据库中的表结构;

表“System_t”

id         |    Owner     |    System
===========================================
1          |    Joe       |    Registration
           |              |    Event             //contains new line
           |              |    Aims
-------------------------------------------
2          |    Rose      |    Ticket
           |              |    Elearning

注意:数据字段“系统”是从 Textarea 框中保存的。

我的问题是如何从“系统”字段中只删除“事件”数据?

我的表在删除时应该是这样的;

id         |    Owner     |    System
===========================================
1          |    Joe       |    Registration
           |              |    Aims
-------------------------------------------
2          |    Rose      |    Ticket
           |              |    Elearning 

知道如何在不更改表结构的情况下做到这一点吗?

4

6 回答 6

5

在这种情况下,带有 a的UPDATE语句REPLACE应该更好。

看看这篇文章,它可能会帮助你理解我在说什么:

在MYSQL中删除部分字符串

于 2012-06-15T09:16:46.917 回答
0

您可以使用delete命令将其删除:

DELETE FROM table_name
WHERE some_column=some_value
于 2012-06-15T09:13:00.927 回答
0
$searchQuery = "Event";

$query = mysql_query("SELECT `id`, `System` FROM `System_t` WHERE `System` LIKE '%" . $searchQuery . "%'");

if (mysql_num_rows($query) > 0) {
    while ($arr = mysql_fetch_row($query)) {
        $system = explode("\n", $arr[1]);
        $key = array_search($searchQuery, $system);
        if ($key !== false)
            unset($system[$key]);

        $system = implode("\n", $system);

        mysql_query("UPDATE `System_t` SET `System`='" . $system . "' WHERE `id`='" . $arr[0] . "'");
    }
}
于 2012-06-15T09:16:00.577 回答
0

试试这个:

 update System_t su
       set su.System = replace(su.System, "Event", "") 
        where su.System like "%Event%";

我没有考虑新行我把它留给你作为一个简单的练习:)。

于 2012-06-15T09:23:21.237 回答
0
Update system_t SET system=REPLACE(system,'event','') WHERE system REGEXP '[[:<:]]event[[:>:]]';
于 2012-06-15T09:25:06.400 回答
0

对于 PostgreSQL,你可以使用类似的东西(因为我相信在 MySQL 中没有直接替换功能):

UPDATE "System_t"
SET "System" = overlay("System" placing '' 
               from (position('Events' in "System")) 
               for 6)
WHERE "System" LIKE '%Events%'

您可以在此处查看叠加和位置功能的说明:http ://www.postgresql.org/docs/8.0/static/functions-string.html

6 是您要删除的字符串的大小。

无论如何,我建议您使用例如 (id, system_id, system_type) 创建另一个表,其中 system_id 是指向另一个表的外键。这样,您将拥有更好的模型并避免很多不一致。

于 2012-06-15T10:11:08.800 回答