Операторы SQL больше и меньше не возвращают правильные результаты

Я запускаю запросы, и они не смотрят на все число при использовании операторов > и ‹, поэтому в этом примере результаты неверны, поскольку он смотрит на 1, а не на 10 в первом октете. Вот запрос и выдержка из результатов.

select distinct v1.name, v1.[user], t1.displayversion from vComputer v1
inner join Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
where t1.DisplayName like 'Symantec Enterprise Vault%' and t1.DisplayVersion < '9.0.13509'

Результаты:

name            user          displayversion
ATVIEL-PB0225L4 bunger          10.0.17573
ATVIEL-PB0225LH fmotedayen      10.0.17573
ATVIEL-PB036MTR skoeroezsi      10.0.17573
ATVIEL-PB036MTS criesenhuber    10.0.17573
ATVIEL-PC00768L skaehler        10.0.17573

Как я могу это исправить?


person user3009669    schedule 20.07.2015    source источник
comment
возможный дубликат Как сравнить версии программного обеспечения с помощью SQL Server?   -  person jpw    schedule 20.07.2015
comment
В качестве быстрого хака вы можете просто удалить крайние правые 5 символов и сравнить номера сборок.   -  person shawnt00    schedule 20.07.2015
comment
Хотя вопрос, который я пометил как дубликат, не совсем подходит, ответы на этот вопрос должны быть вам полезны.   -  person jpw    schedule 20.07.2015


Ответы (1)


Проблема в том, что вы сравниваете строки, и тогда это будет сделано в алфавитном порядке. У вас есть в основном 2 варианта:

  1. Разделите номер версии на части, чтобы вы могли преобразовать каждую из них в числа и иметь 3 поля в порядке (или любое максимальное количество частей в версии)

  2. Сохраняйте номера версий с ведущими нулями, чтобы алфавитный порядок совпадал с числовым порядком.

person James Z    schedule 20.07.2015
comment
Спасибо за ответ. Не могли бы вы привести пример предлагаемого запроса для получения результатов, которые я ищу? - person user3009669; 23.07.2015
comment
@user3009669 user3009669 Если версия имеет макс. 4 части, вы можете использовать parsename msdn.microsoft.com/en-us/library /ms188006.aspx - person James Z; 23.07.2015