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
Другие вопросы по тегам