をすべてのバージョン番号は、これらのいずれかのように見える場合:
X
X.X
X.X.X
X.X.X.X
Xは0〜255の整数で、INET_ATON()
関数を使用して、文字列を比較のために整数に変換できます。
関数を適用する前に、必要な数量を'.0'
に追加して、関数の引数がX.X.X.X
形式であることを確認する必要があります。それを行うには、まず知る必要がありますどのようにこのように行うことができ、多くの.
の文字列がすでに含まれている、:
ある
CHAR_LENGTH(ver) - CHAR_LENGTH(REPLACE(ver, '.', '')
、文字列の周期の数がの長さでありますピリオドを削除した後の文字列からその長さを引いた値。
得られた結果は、次に3
から差し引くと、'.0'
と共に、REPEAT()
関数に渡さなければならない:
REPEAT('.0', 3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
これが一致するように、私たち元ver
値に追加されなければならないストリングを与えますX.X.X.X
の形式です。したがって、順番に、ver
と一緒にCONCAT()
関数に渡されます。その結果、CONCAT()
はINET_ATON()
に直接渡すことができます。結果は次のようになります。
INET_ATON(
CONCAT(
ver,
REPEAT(
'.0',
3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
)
)
)
これは1つの値にすぎません。 :)他の文字列に対しても同様の式を構築し、その後で結果を比較することができます。
参照:
文字列を数字として文字列と文字列として保存する理由は? – zerkms
バージョン番号には常に3つの数字のグループが含まれていますか? –
@サルマン:いいえ4.2と4.2.1を比較する必要があるかもしれません。 – Eric