SQLの問題

、動的文、比較フィールドの問題をMyBatisの

<もしテスト=の== "" '>
<もしテスト= "S == ''のtoString()">

二、MySQLの文字列比較の問題

問題の説明:

SELECT 2> 12であり;#結果は(0 偽に)
SELECT '2'> '12は、#結果。1(trueに)

ただ、変動の種類が、文字列が文字比較が続いているため、結果は、反対で、その数は、直接比較の大きさに応じています。

手段を比較するアルファベット順に:等しくない場合、例えば、上記の「2」及び「12」は、第1すぐに、結果を文字「2」と「1」の大きさを比較する、または次の比較に進みあなたは結果なしで、これまでに取得したり、比較し続けることが、あなたは一見不合理1(真)を取得するまで。

結論:混合のための元の数と非数値文字列、サイズ比較を行うときに、等しい長さの2つの文字列が、次に文字の2つの文字列が同一の位置と比較する場合、比較の文字が数字、直接比較であれば、すでに位置の点の大きさならば、それは、ASCIIコードの比較に変換されるだろう数字以外の文字ならば、それは比較にならないでしょう。

ソリューション

キャスト():標準構文キャスト(型と値)

#は整数に変換される(値の区間
[ - 9223372036854775808〜9223372036854775807])
キャスト('12 であるAS SIGNED)
または符号なし整数に変換([値間隔0〜キャスト18446744073709551615])'12はAS UNSIGNED)

標準の構文変換(値、タイプ):()に変換

  • #の変換整数変換(、'12 は、符号付き)
    (#または符号なし整数変換する変換'12は、UNSIGNED)

直接文字列0

'123' + 0を選択

しかし、値がより大きいUNSIGNEDタイプの最大値、科学的表記法を使用して、高精度誤差

おすすめ

転載: www.cnblogs.com/kobe24vs23/p/11592452.html