2017-07-12 6 views
0

問題:ユーザーが%%と入力すると、2つのパーセント記号を連続して含むテキストを検索します。アプリケーションはそれを条件... LIKE '%\\%\\%%'に変換します。データベースが間違った結果を返します。国別文字が含まれていなくても照合がLIKE照合に影響するのはなぜですか?

私は、問題を照合に絞り込むことができました。いくつかのMySQLとMariaDBのバージョンでテストされていますが、以下の2つのクエリは異なって評価されます。 LIKE演算子と照合を読み込もうとしましたが、その違いを説明できるものは見つかりませんでした。

SELECT '%' COLLATE utf8_czech_ci LIKE '%\\%\\%%'; 

結果:TRUE

SELECT '%' COLLATE utf8_general_ci LIKE '%\\%\\%%'; 

結果:FALSE

+0

[MySQL utf8 \ _czech \ _ci vs utf8 \ _general \ _ci](https://stackoverflow.com/questions/30639089/mysql-utf8-czech-cs-utf8-general-ci)の可能な複製 – bodi0

+0

@ bodi0、おそらく、パーセント記号は、(少なくともチェコ語のアルファベットではない)どんな国のアルファベットにも関連していないのですか? –

答えて

0

どちらの照合は、異なる文字セット(utf8_czech_ci/utf8_general_ci)が含まれています

A=a=ª=À=Á=Á=Â=Ã=Ä=Å=à=á=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ B=b C=c=Ç=ç cz Č=č 
D=d=Ď=ď dz Ð=ð E=e=È=É=É=Ê=Ë=è=é=é=ê=ë=Ē=ē=Ĕ=ĕ=Ė=ė=Ę=ę=Ě=ě F=f fz ƒ 
G=g=ğ=Ģ=ģ H=h hz ch I=i=Ì=Í=Í=Î=Ï=ì=í=í=î=ï=Ī=ī=Į=į=İ ij=ij iz ı J=j K=k=Ķ=ķ 
L=l=Ļ=ļ lj=LJ=Lj=lj ll lz Ł=ł M=m N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz 
O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø P=p Q=q R=r Ř=ř S=s=ş sh ss=ß sz 
Š=Š=š=š T=t=Ť=ť TM=tm=™ tz U=u=Ù=Ú=Ú=Û=Ü=ù=ú=ú=û=ü=Ū=ū=Ů=ů=Ų=ų ue uz V=v W=w 
X=x Y=y=Ý=Ý=ý=ý=ÿ=Ÿ yz Z=z zh zz Ž=Ž=ž=ž Þ=þ µ 

A=a=À=Á=Á=Â=Ã=Ä=Å=à=á=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az B=b C=c=Ç=ç=Č=č ch cz 
D=d=Ď=ď dz E=e=È=É=É=Ê=Ë=è=é=é=ê=ë=Ē=ē=Ĕ=ĕ=Ė=ė=Ę=ę=Ě=ě F=f fz G=g=ğ=Ģ=ģ H=h 
hz I=i=Ì=Í=Í=Î=Ï=ì=í=í=î=ï=Ī=ī=Į=į=İ=ı ij iz J=j K=k=Ķ=ķ L=l=Ļ=ļ lj ll lz M=m 
N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz O=o=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe oz P=p Q=q R=r=Ř=ř 
S=s=ß=ş=Š=Š=š=š sh ss sz T=t=Ť=ť TM=tm tz U=u=Ù=Ú=Ú=Û=Ü=ù=ú=ú=û=ü=Ū=ū=Ů=ů=Ų=ų 
ue uz V=v W=w X=x Y=y=Ý=Ý=ý=ý=ÿ=Ÿ yz Z=z=Ž=Ž=ž=ž zh zz 
Æ=æ Ð=ð × Ø=ø Þ=þ ÷ ij Ł=ł Œ=œ ƒ LJ=Lj=lj 
+0

あなたのコメントに私が言及したように、なぜそれがパーセント記号に影響するでしょうか? –

関連する問題