Columna IDENTIDAD de SQLServer con texto

¿Cómo crearía una columna de IDENTIDAD en SQLServer con texto en la columna?

Ejemplo:


 ABCD-987065
 ABCD-987066
 ABCD-987067

Además de las otras respuestas, puede crear una columna calculada en la tabla para proporcionar lo que está solicitando.

CREATE TABLE dbo.MyTable ( Id int NOT NULL PRIMARY KEY, CombinedId AS 'ABCD-' + CAST(Id as varchar(16)) ) 

O:

 CREATE TABLE dbo.MyTable ( Id int NOT NULL PRIMARY KEY, PrefixField varchar(16), CombinedId AS PrefixField + CAST(Id as varchar(16)) ) 

(Su pregunta no dice si el prefijo está destinado a ser reparado o no …)

No deberías usar una columna de IDENTIDAD, pero tú mismo has generado las identificaciones / cadenas.

Es mejor formatear la columna IDENTIDAD para mostrarla, especialmente si la parte de la cadena es constante para todos los registros: hace que indexar / consultar más rendimiento y ahorre espacio en BD.

Si los registros pueden tener una sección de cadena diferente (es decir, no todos comienzan con “ABCD-“), entonces puede almacenar eso como un campo separado.

Puede incrementar sus valores de cadena con una función como esta:

http://www.sqlservercentral.com/scripts/Miscellaneous/31448/

Tengo curiosidad, sin embargo, por qué estás buscando usar una clave alfanumérica en lugar de solo una numérica.

No. El tipo de columna real debe ser un int o bigint también.

No, lo siento. La “propiedad” de identidad solo se puede colocar en columnas con el tipo de datos entero o decimal.

No, pero puede crear su statement Select de tal forma que le devuelva el código que desea:

 Select 'ABCD-' + Cast(IdColumn as varchar) as IdColumn From MyTable Where (....); 

Esto supone que tiene una columna llamada IdColumn en su tabla y que la propiedad “IDENTIDAD” se ha establecido en “verdadero”. Es decir, resalte el campo en el diseñador de tablas de SQL Server Management Studio y verá una ventana para las propiedades en la parte inferior.

Si la parte ‘ABCD’ puede cambiar, puede colocar este valor en otro campo y luego recuperarlo de la siguiente manera:

 Select PrefixField + '-' + Cast(IdColumn as varchar) as IdColumn From MyTable Where (....); 

Podría, por supuesto, crear una vista para hacer esto por usted o incluso un campo calculado también. De esta forma, el valor de retorno está incorporado a la consulta y no tiene que recordar ingresar todo esto cada vez.

Verifique las respuestas aquí …

Aumentar el valor alfanumérico en la función definida por el usuario