0

これらはテーブル列の場合であり、post_attending次のpost_attendingようになります。5または5,6,7または6,7,5または6,5,7または''またはより長い文字列コンマで区切られ、これに5が含まれるかどうか。,PDOクエリで使用して周囲の「5」と「可能性」を削除するにはどうすればよいですか?

私はこれを試しました:

$q= "UPDATE table SET post_attending = SUBSTR(REPLACE(CONCAT(',', post_attending, ','), ? , ','), 2, LENGTH(REPLACE(CONCAT(',', post_attending, ','), ? , ',')) - 2) WHERE id = x "
$sql->execute(array(5,5,x)); 

,しかし、5または5が最後にあるとき、それは私を残します。

私はこれを読んだことがありますTRIM(BOTH ',' FROM REPLACE(wishes, '(,)? :var (,)?', ''))が、正しい構文を実際に理解していません。

4

2 に答える 2

0

ステートメントを使用せずCASEに、そして私はそれがより速いだろうと信じています

UPDATE table SET post_attending = SELECT REPLACE(REPLACE(REPLACE(REPLACE(val, ',5,', ','), ',5', ''), '5,', ''),'5', '')
于 2013-02-27T16:45:20.103 に答える
0

これを試して:

update table
    set post_attending = (case when val like '5,%' then SUBSTRING(val, 3, LENgth(val) - 2)
                               when val like '%,5' then SUBSTRING(val, 1, length(val) - 2)
                               when val = '5' then ''
                               else REPLACE(val, ',5,', ',')
                           end)
于 2013-02-27T16:23:20.957 に答える