#sql #type-conversion #postgresql-9.6
Вопрос:
У меня есть таблица базы данных, которая включает строку агента пользователя. Этот пользовательский агент включает в себя такую информацию, как тип устройства, тип браузера и, самое главное, номер версии. Большинство примеров выглядят так
App Name/4.0.0 (iPad; iOS 12.3.1; Scale/2.00)
App Name/4.14.3 (iPad; iOS 14.0.1; Scale/2.00)
App Name/5.15.2 (iPad; iOS 10.3.3; Scale/2.00)
и информация, которую я хотел бы извлечь, — «4.0.0». В частности, я хотел бы получить список всех записей с минимальной версией 4.0.0
Вот что у меня есть на данный момент
WHERE TRIM(SUBSTRING(user_agent,19,6))
что обнадеживающе возвращает 4.0.0, 4.14.3 и 5.15.2. Однако это строка, а не int, поэтому я не уверен, как найти минимальную версию.
- Есть ли лучший способ извлечь этот номер версии, чем использование мной подстроки?
- Как вы сортируете или фильтруете по номеру версии?
Комментарии:
1. Это не может быть int. Int не имеют десятичных знаков, а значения с плавающей запятой имеют только один. Это строка, представляющая различные части номера версии, поэтому вам придется извлечь отдельные части, преобразовать их в целые числа, а затем сравнить различные части, чтобы определить, какая из них самая большая. В противном случае вы можете просто
ORDER BY version
использовать aTOP 1
в своемSELECT
, что даст вам минимальное строковое значение (которое может не всегда работать так , как вы ожидаете).2. Кроме того, при использовании тега SQL почти всегда необходимо также добавить тег для конкретной используемой СУБД, поскольку синтаксис и функциональность различаются между ними. Вы можете прочитать это как предложение, если наведете указатель мыши на тег SQL в левом нижнем углу вашего поста и прочтете описание всплывающего тега.
3. Просто понял, что я не ответил на ваш фактический вопрос, что было лучшим способом извлечь этот номер версии . Ответ на этот вопрос будет зависеть от конкретной используемой вами СУБД, для которой вы не указали тег, поэтому ответить на него будет сложно.
4. Отметьте свой вопрос в базе данных, которую вы используете.