2017-03-21 14 views
3

ServerバージョンエスケープLIKE:10.1.21-MariaDB-1〜のジェシーMariaDBのバグ?壊れた

select 'a%b' like '%\%\%'; 
+--------------------+ 
| 'a%b' like '%\%\%' | 
+--------------------+ 
|     1 | 
+--------------------+ 
1 row in set (0.00 sec) 

をLIKE句は、 'ワイルドカード+リテラル%+リテラル%' を表していますが、 '%b' を一致します。

または

select 'a%b' like '%\%\%\%\%\%'; 
+--------------------------+ 
| 'a%b' like '%\%\%\%\%\%' | 
+--------------------------+ 
|      1 | 
+--------------------------+ 
1 row in set (0.00 sec) 

のMySQL 5.5.38両方のステートメントのために0を返します。 MariaDBの構文は異なっていますか?


@rahulを追加構文が間違っていることを指摘し、私はダミーのテーブルを作成し、テーブル内のすべての行と一致する

SELECT * FROM `table1` where 'a%b' like '%\%\%'; 

を走りました。私は今、10.1.22でテストしようとして

SELECT * from `table` where field1 like '%\%\%'; 

を実行したときに

しかし、フィールド1 =「%のB」の行は一致していません。

+0

デフォルトでは、MariaDBは '%'エスケープにバックスラッシュ文字を使用します( 'like'式内の' escape'節でオーバーライドされない限り)。 – Shadow

+2

これを10.1.22で再現できないので、修正されたバグを推測していますか? – apokryfos

答えて

0

10.1.22で修正されているようです。

Server version: 10.1.22-MariaDB-1~xenial mariadb.org binary distribution 

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

MariaDB [(none)]> select 'a%b' like '%\%\%'; 
+--------------------+ 
| 'a%b' like '%\%\%' | 
+--------------------+ 
|     0 | 
+--------------------+ 
1 row in set (0.00 sec)