2

好的,我知道我的数据库没有标准化,但就我而言,无法标准化数据,因为每个用户都有不同的访问级别和访问权限,每次我修改某些内容并且我需要删除行并重新插入,所以我去了逗号分隔的值,这里的问题是如果我删除一个特定的组,正则表达式不起作用,它会抛出一个错误..am using php,错误是这样的

FUNCTION database_name.REGEXP_REPLACE does not exist

表结构

allowed_group_ids
+----------------+
12345,34345,55454

我的查询,例如$delete_id12345或说55454,我一次只传递一个 ID,并且 ID 之间没有空格,它是一个文本字段

UPDATE tbl_scripts SET allowed_group_ids = TRIM(BOTH ',' 
FROM REGEXP_REPLACE(allowed_group_ids, '(,(\s)?)?$detele_id', '')) 
WHERE system_id = {$_SESSION['system_id']}

那么这里有什么问题呢?

4

1 回答 1

0

MySQL 中没有 regexp_replace 这样的东西。

您可以使用常规替换执行此查询:

UPDATE tbl_scripts SET allowed_group_ids = 
    trim(BOTH ',' FROM 
        replace(
            replace(allowed_group_ids, '$delete_id',','),
            ',,',
            ','
        )
    )
WHERE system_id = {$_SESSION['system_id']}

这首先会删除 ID,并删除所有双引号,然后删除字符串开头/结尾的所有逗号。这应该足够了,但如果需要,您可以添加另一个替换以删除空格。

更新:SQL Fiddle显示了实际的查询

于 2013-01-16T09:26:55.213 回答