2011-08-10 20 views
6

UIから正規表現を受け入れるためのテキストフィールドがあります。これらの正規表現には、検索機能があり、検索したいと思っています。私は準備文を使用しており、DBはmysqlです。 '%'で検索すると、 '%'で始まる検索正規表現のみが必要です。しかし、 '%'はmysqlのワイルドカードなので、検索のすべての正規表現を取得します。どのようにそれをエスケープする。Mysqlの正規表現で特別なSQL文字をエスケープする方法

+0

「_」のような他のmysqlワイルドカードをエスケープしたいと思います。 – Daemonthread

+0

正規表現やLIKE演算子について話していますか?正規表現では、%は特殊文字ではないためです。あなたの質問をより明確に編集してください。そして/または、例として使用するSQL条件を記述します。 – TMS

+0

DBに正規表現を格納しています。そして、私は正規表現を検索するためにSQLのLIKE演算子を使用しています。 Sample sql: "式LIKE '%';"のREGEXから式を選択します。私は通常の文字としてSQLで%を使用したい。 – Daemonthread

答えて

8

に示すようにだけ、文字の前にバックスラッシュを使用します(MySQLのドキュメントから)

\0 An ASCII NUL (0x00) character. 
\' A single quote ("'") character. 
\" A double quote (""") character. 
\b A backspace character. 
\n A newline (linefeed) character. 
\r A carriage return character. 
\t A tab character. 
\Z ASCII 26 (Control+Z). See note following the table. 
\\ A backslash ("\") character. 
\% A "%" character. See note following the table. 
\_ A "_" character. See note following the table. 

注:

をあなたは "\%" または「\ _を使用している場合パターンマッチングコンテキストの外側では、文字列 "\%"と "\ _"を評価し、 "%"と "_"は評価しません。

1

あなたがPHPを使用している場合は、%、_と、このコードを使用して文字エスケープがあります!また防ぐためにいつものように(エスケープする必要があります

$escaped = addcslashes($str, "%_"); 

\(バックスラッシュ)を、そしてもちろん、あなたの言葉を引用SQLインジェクション)、例えば〜によってmysql_real_escape_string()

関連する問題