MySQL関数で文字列の先頭と末尾の空白文字を消去する方法

1605 ワード

質問:短い情報レビューの場合、内容によって判断されます.例えば、aの内容はパスできますが、bの内容はパスできません.MySQLではmsg=a、msg=bと表現されていますが、msgフィールドの内容に折り返し改行などの空白文字(最も一般的なのは、内容の先頭と末尾に改行が現れる)が含まれていると、比較的成功せず、短い情報レビューが成功しません.
内容挿入時に完全なフィルタリングができないため、ここを審査するとよく問題が発生し、頭が大きいが、MySQLのtrim関数はリターンと改行を取り除くことができず、余分なスペースしか取れない.今日はMySQLの関数、replace関数を検討したが、結局この問題を解決した.具体的な解決方法は以下の通りである.
データベースの内容を「愛してる」と監査したいとします.
」という短いメッセージ(内容に注意して改行あり)を通して(statusを1に変更)
前のSQL文は機能しません
 
  
UPDATE `tran`
SET `status` = '1'
WHERE `msg` = ' ';

変更後の文
 
  
UPDATE `tran`
SET `status` = '1'
WHERE trim( replace( `msg`, '\r
', ' ' ) ) = ' ';

データの中の折り返し改行などをスペースに置き換えてからtrimを落とすのが目的で、特に完璧ではありませんが、ユーザーが入力したときにコントロールできないので、この対策しかできませんが、MySQL内蔵関数の効率は保証されています.
更新(15:50):
 
  
UPDATE `tran`
SET `status` = '1'
WHERE trim( trim(
BOTH '\r
'
FROM content ) ) = ' '

2つのtrimを使用すると、内容の中間の改行やリターンを置き換えることなく、頭尾のスペース改行リターンのみを処理し、phpにおけるtrim関数の役割に相当します.
附:replace用法
1.replace into
 
  
replace into table (id,name) values('1','a'),('2','b');

この文の役割は、テーブルtableに2つのレコードを挿入することです.
2.replace(object, search,replace)
オブジェクトに現れるsearchのすべてをreplaceに置き換える
select replace('www.qq.com', 'q', 'Y');
上記例の出力結果www.YY.com
注意:trimとreplace関数の詳細な使い方はMySQLマニュアルを参照してください.
著者:躍龍雑記