Member 12926744 Ответов: 1

Как получить следующее максимальное значение из столбца первичного ключа в таблице, содержащей символ '-'


Всем Привет,

У меня есть столбец таблицы, который является моим первичным ключом. Значение столбца начинается с 10000 . когда данные вставляются в таблицу,значение столбца будет добавлено с помощью "POD", то есть это будет похоже на POD10000, POD10001, POD10002 и т. д...Это было работает нормально .Но из-за некоторых модификаций
на определенной странице мне пришлось вставить расширение "-1", "-2". теперь всякий раз, когда я вставляю новое значение, я получаю ошибку "
Conversion failed when converting the varchar value '10001-1' to data type int
".

Итак, мой вопрос, как я могу найти следующее Самое высокое значение, исключая расширение" -".
Предположим, что значения в coulmn равны
POD10000
POD10000-1
POD10000-2
POD10000-3
POD10004
POD10005
POD10005-1


Мне нужно получить значение как 10006.пожалуйста, помогите мне.

Что я уже пробовал:

select isnull(max(CONVERT(INT,substring(col1,4,11)))+1,0) as col1 from tab_1


Здесь я получу следующее значение как 10006, если нет значений с '-'.Как получить следующее Самое высокое значение, если есть '-'.
Любая помощь будет очень признательна.Заранее спасибо.

1 Ответов

Рейтинг:
0

Kornfeld Eliyahu Peter

'10000-1' не может быть преобразован в INT (очевидно)...
Если хотите держите их в порядке (10000, 10000-1, 10000-2, 10001, 10002) у вас есть два варианта:
1. Используйте плавающую точку и замените '-' на '. ' ... - это дает 10000, 10000.1, 10000.2, 10001, 10002
2. Замените "-" на". "и умножьте на 10 (или 100, если у вас есть более одной цифры после" -"...) - это даст 100000, 100001, 100002, 100010, 100020