Member 13569764 Ответов: 4

Как увеличить мой идентификатор, поданный начиная с алфавита в SQL


У меня есть идентификационный файл OrderNo в моей таблице заказов тип данных в nvarchar
У меня orderNo 20000, T20000
Как автоинкрементировать с максимальной функцией мне нужно 20001 или T20001

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

select 'T' + CONVERT(VARCHAR(10),max(OrderNo)+1)AS OrderNo  from tblOrderMaster

4 Ответов

Рейтинг:
2

CHill60

Если вы хотите сохранить порядковый номер с предшествующей ему буквой " T " в своей базе данных, вам понадобится отдельный столбец для его хранения (именно поэтому вы получаете ошибку "I am getting error like this "Conversion failed when converting the nvarchar value 'T20001' to data type int" error).

Вы уже заявили, что OrderNo это поле идентификации, поэтому нет необходимости использовать MAX() - на самом деле вы должны никогда используйте это как метод для генерации "уникального" идентификатора (нет никакой гарантии, что он будет уникальным в многопользовательской базе данных).

Чтобы получить номер вашего заказа с предыдущей буквой "Т", просто используйте

select 'T' + CAST(OrderNo AS VARCHAR) AS OrderNoWithPrefix from tblOrderMaster
Честно говоря, нет никакой необходимости сохранять это значение в базе данных, поскольку оно, по - видимому, является функцией только отображения-просто добавьте T, когда вам это нужно.


Рейтинг:
1

M4rLask

select 'T' + CONVERT(VARCHAR, MAX(OrderNo)+1, 103) AS OrderNo from tblOrderMaster


Member 13569764

Я получаю такую ошибку: "преобразование не удалось при преобразовании значения nvarchar 'T20001' в тип данных int"

Рейтинг:
0

User-10689749

select 'T' + CONVERT(VARCHAR(10),max(OrderNo)+1)AS OrderNo  from (SELECT REPLACE(OrderNo,'T','')AS OrderNo from @tblOrderMaster) Final