[英]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_id
是12345
或說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.