sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-identitet med indledende polstrede nuller

Som de andre allerede med rette har påpeget - en INT har aldrig førende nuller - det holder bare værdien, det er alt (og det er godt på den måde).

Hvis du har brug for yderligere formatering, kan du altid tilføje en beregnet kolonne til din tabel, sådan som:

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

På denne måde vil din INT IDENTITY blive brugt som en INT og altid indeholde den numeriske værdi, mens DisplayNumber indeholder 001, 002, ... 014, 015, ..... og så videre - automagisk, altid opdateret.

Da det er et vedvarende felt, er det nu en del af din tabel, og du kan forespørge på det og endda sætte et indeks på det for at gøre forespørgsler hurtigere:

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

Og selvfølgelig kan du bruge næsten enhver formatering i definitionen af ​​din beregnede kolonne, så du kan også tilføje et præfiks eller noget:

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

Så i dette tilfælde er dit DisplayNumber ville være ABC-001, ABC-002, ... og så videre.

Du får det bedste fra begge verdener - du beholder din INT IDENTITY, som er numerisk og automatisk forøget af SQL Server, og du kan definere et visningsformat, som du vil, og have det tilgængeligt til enhver tid.



  1. Sådan importeres CSV til MySQL Workbench

  2. SQL Multiple Indsæt i flere rækker

  3. SQL Pivot med flere kolonner

  4. MySql-forespørgsel Erstat NULL med tom streng i Select