2017-01-31 1 views
0

値がLDAPユーザーの識別名であり、CN値がカンマで区切られたDNという名前のDBテーブル列があります。例: 'CN=User,name、OU = People 、DC =ドメイン、DC = com '。Regexを使用して、mysqlを使用して列値のエスケープ文字で更新する

値の一部は、「CN=UserName、OU = People、DC = domain、DC = com」のようにCNのカンマなしでもかまいません。私はエスケープ文字 '\'をCN名の一部としてカンマのみに追加したいが、OUとDCの文字に先行するカンマではない。私は次の3つのステートメントでエスケープ文字を追加しようとしました。代わる単一のMySQLのUPDATE文をお探し

UPDATE LOGININFO SET DN = REPLACE(DN, ',', '\\,'); 

UPDATE LOGININFO SET DN = REPLACE(DN, '\\,OU=', '\,OU='); 

UPDATE LOGININFO SET DN = REPLACE(DN, '\\,DC=', '\,DC=');  

'CN =ユーザー、名前、OU =人、DC =ドメイン、DC = comの' CN =ユーザー\、名、OU =人、DC」は= domain、DC = com '

答えて

1

ネストされた置換が必要なようです。これはあなたが望むことをしますか?

UPDATE LOGININFO 
    SET DN = REPLACE(REPLACE(REPLACE(DN, ',', '\\,'), '\\,OU=', '\,OU='), '\\,DC=', '\,DC='); 
+0

ありがとう@Gordon Linoff。それは本当にうまくいった。私はちょうどエスケープ文字\が利用可能な列の値をもう1つ考えています。以前に投稿したスクリプトを実行すると、追加の '\'権利も追加されますか? 'CN =ユーザー\\、名前、OU =人物、DC =ドメイン、DC = com' – Murali

関連する問題