Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сравним низа на версията (x.y.z) в MySQL?

Ако всичките ви номера на версиите изглеждат като някое от тези:

X
X.X
X.X.X
X.X.X.X

където X е цяло число от 0 до 255 (включително), тогава можете да използвате INET_ATON() функция за трансформиране на низовете в цели числа, подходящи за сравнение.

Преди да приложите функцията обаче, ще трябва да се уверите, че аргументът на функцията е от X.X.X.X формуляр, като добавите необходимото количество '.0' към него. За да направите това, първо ще трябва да разберете колко . ' е низът, който вече съдържа, което може да се направи по следния начин:

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 формат. Така че, от своя страна, той ще бъде предаден на CONCAT() функция заедно с ver . И резултатът от това CONCAT() вече може да се предава директно към INET_ATON() . Ето какво получаваме в крайна сметка:

INET_ATON(
  CONCAT(
    ver,
    REPEAT(
      '.0',
      3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
    )
  )
)

И това е само за една стойност! :) Подобен израз трябва да бъде конструиран и за другия низ, след което можете да сравните резултатите.

Препратки:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извлека само колони, които имат ненулеви стойности в mysql и php?

  2. Колона, изчислена от друга колона?

  3. Записване на специални символи в MySQL база данни

  4. MySQL, кой е по-ефективен дълъг текст, текст или blob? Подобряване на ефективността на вложката

  5. Заявете mysql и експортирайте данни като CSV в PHP