簡體   English   中英

正則表達式不適用於mysql以替換逗號分隔的id

[英]REGEX not working for mysql for replacing comma separated ids

好的,我知道我的數據庫沒有被規范化,但是在我的情況下,由於每個用戶具有不同的訪問級別(具有訪問權限),因此無法規范化數據,每次我修改內容時都需要刪除行並重新插入,因此逗號分隔的值,這里的問題是,如果我刪除一個特定的組,正則表達式不起作用,它會向我拋出一個錯誤..am,使用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']}

那這怎么了?

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顯示正在運行的查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM