sql >> Databáze >  >> RDS >> Sqlserver

Identita SQL s úvodními vyplněnými nulami

Jak již správně poznamenali ostatní - INT nikdy nemá úvodní nuly - pouze si drží hodnotu, to je vše (a to je takto dobře).

Pokud potřebujete nějaké další formátování, můžete do tabulky vždy přidat vypočítaný sloupec, něco jako:

ALTER TABLE dbo.Identitytest
  ADD DisplayNumber AS  RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED

Tímto způsobem bude vaše INT IDENTITY použita jako INT a bude vždy obsahovat číselnou hodnotu, zatímco DisplayNumber obsahuje 001, 002, ... 014, 015, ..... a tak dále – automaticky, vždy aktuální.

Vzhledem k tomu, že se jedná o trvalé pole, je nyní součástí vaší tabulky a můžete se na něj dotazovat a dokonce do něj vložit index, aby byly dotazy rychlejší:

SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'

A samozřejmě můžete v definici vypočítaného sloupce použít téměř jakékoli formátování, takže můžete také přidat předponu nebo něco podobného:

ALTER TABLE dbo.Identitytest
  ADD DisplayNumber 
      AS  'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED

V tomto případě tedy vaše DisplayNumber by bylo ABC-001, ABC-002, ... a tak dále.

Získáte to nejlepší z obou světů – ponecháte si svou INT IDENTITY, která je numerická a automaticky zvyšována SQL Serverem, a můžete definovat formát zobrazení, jak chcete, a mít jej kdykoli k dispozici.



  1. Jaký je připojovací řetězec sql, který musím použít pro přístup k localhost\SQLEXPRESS s ověřováním Windows nebo ověřováním SQL?

  2. MySQL:Proč 5. ID v klauzuli IN drasticky mění plán dotazů?

  3. Heslo salt -- Dělám to správně?

  4. Export dat do Excelu z tabulky Oracle pomocí PL SQL