2013-11-07 1 views
0

Мне нужно вытащить запись с самым высоким значением, в частности мне нужно только значение из этого поля. Проблема в том, что столбец представляет собой формат nvarchar, который содержит сочетание чисел и специальных символов. Ниже всего лишь пример:SQL: Найти наибольшее число, если его в формате nvarchar, содержащем специальные символы

PK  | Column 2 (nvarchar) 
------------------- 
1  | .1.1. 
2  | .10.1.1 
3  | .5.1.7 
4  | .4.1. 
9  | .10.1.2 
15  | .5.1.4 

В основном, из-за естественного вида, элементы в столбце 2 сортируются как строки. Поэтому вместо того, чтобы возвращать PK для строки, содержащей «.10.1.2» в качестве самого высокого значения, я получаю PK для строки, которая содержит «.5.1.7».

Я попытался написать некоторые функции для этого, но кажется, что то, что я написал, выглядело намного сложнее, чем должно быть. У кого-нибудь есть что-то простое или сложные функции - единственный способ?

Я хочу пояснить, что я пытаюсь захватить PK записи, которая содержит самое высокое значение столбца 2.

+1

Является ли '.10.1' больше, чем' .5.1. потому что 10> 5 или потому, что 101> 51? –

+0

Значения в основном ограничены периодом. поэтому 10> 5 да –

+0

первый набор чисел - это родители, а второй набор чисел - это дети для соответствующего родителя. –

ответ

2

Этот запрос может вернуть то, что вы хотите

SELECT MAX(CAST(REPLACE(Column2, '.', '') as INT)) FROM table 
+0

Этот вид работ. Это моя ошибка, хотя я не был достаточно конкретным. Я отредактирую свой вопрос. Спасибо за ответ, хотя –

Смежные вопросы