2010-04-16 2 views
0

Existe-t-il un type de colonne IDENTITY qui génère des valeurs alphanumériques? Comme 023904F?Existe-t-il un type de colonne TSQL alphanumérique comme IDENTITY?

+0

double possible de http://stackoverflow.com/questions/2177584/sqlserver-identity -column-with-text – gbn

+0

Demandez-vous une colonne IDENTITY qui compte, par exemple, en base 16 (0-F) ou peut-être en base 36 (0-9, AZ)? (À titre de comparaison: les systèmes de réservation des compagnies aériennes utilisent la base 36 pour identifier les réservations.) – egrunin

Répondre

3

OUI, la colonne uniqueidentifier, mais il est de 36 caractères de longueur, essayez ceci:

select newid() 

sortie

------------------------------------ 
53F2103C-C357-429E-A0E8-2DC26666638F 

(1 row(s) affected) 

vous pouvez l'utiliser comme:

select LEFT(newid(),7) 

et obtenir:

------- 
50D0F58 

(1 row(s) affected) 

ce ne sera pas unique cependant.

+0

OK, mais cela ne s'ajoute pas automatiquement à la table, comme une ID INTENTION - vous devez définir une CONTRAINTE PAR DEFAUT sur cette colonne pour spécifier ' newid() 'comme valeur par défaut - proche, mais pas exactement pareil, je dirais ... –

+0

Est-ce que le' LEFT (newid(), 7) 'aboutira à une valeur unique comme' IDENTITY'? –

+1

@marc_s, après avoir relu la question et votre commentaire, je ne suis plus sûr de ce qu'on me demande. Est-ce que l'OP veut un caractère semi-aléatoire (7) ou un alphanumérique séquentiel, un si oui, quelles sont les "règles", les zéros en tête, 0-9 et a-z ou quoi? OP mentionne l'identité, mais est-ce unique? –

0

Non - mais vous pouvez toujours

  • créer une INT colonne IDENTITY
  • ajouter une colonne calculée comme la

    ALTER TABLE dbo.YourTable 
        ADD ProductID AS CAST(ID AS VARCHAR(8)) + 'F' 
    

    ou quoi que ce soit que vous voulez faire à l'ID de faites-en votre champ alphanumérique

+1

cela va à ce que l'OP veut, 6 chiffres numériques + 1 lettre? ou autre chose. On dirait que les trois réponses sont pour une question différente, mais le PO n'a pas précisé laquelle des trois questions ils sont après. –

+0

@KM: oui, la question laisse beaucoup de place à l'interprétation. –

Questions connexes