SQL Server Management Studio ZEROFILL
Я пытаюсь добавить первичный ключ auto_increment с ZEROFILL с максимальным размером шесть.
Итак, это выводит:
000001
000002 etc...
Однако я действительно изо всех сил пытаюсь достигнуть этого и не могу найти ответ. Как настроить этот тип столбца в SQL Server Management Studio?
Спасибо
4 ответа
Вы не можете сделать это с целочисленным полем в SQL Server (и я бы не рекомендовал это с Varchar).
Пусть SQL Server сохранит поле в качестве идентификатора, а затем (при условии, что это для отображения) отформатируйте данные, когда вы выберете его следующим образом:
SELECT RIGHT('000000' + CONVERT(VARCHAR(6),ID), 6) FROM Table
То, что вы пытаетесь достичь, невозможно. Форматирование отображения выполняется на уровне представления, а не в базе данных. Вам необходимо отделить значение от представления значения. Два значения 1
а также 000001
подобные.
Если вы хотите вернуть что-то отформатированное, вам придется вернуть значение в виде строки. Просто приведите его к строке, добавьте несколько нулей в начале, а затем оставьте самые левые n символов.
SELECT FORMAT(2, N'000000')
--OR
SELECT FORMAT(2, CAST(REPLICATE(0, 6) AS NVARCHAR(6)))
https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15
Создавая функцию
CREATE FUNCTION MyZeroFill (
@N BIGINT,
@D SMALLINT
) RETURNS VARCHAR(50) AS
BEGIN
RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
(@N AS VARCHAR),@D)
END