Necesito escribir una consulta en el servidor SQL para obtener la lista de columnas en una tabla en particular, sus tipos de datos asociados (con longitud) y si no son nulos. Y me las he arreglado para hacer esto.
Pero ahora también necesito obtener, en la misma tabla, contra una columna, TRUE
si esa columna es una clave principal.
¿Cómo hago esto?
Mi salida esperada es:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
fuente
fuente
Respuestas:
Para evitar filas duplicadas para algunas columnas, use user_type_id en lugar de system_type_id.
Simplemente reemplácelo
YourTableName
con el nombre real de la tabla: funciona para SQL Server 2005 y versiones posteriores.En caso de que esté utilizando esquemas, reemplace
YourTableName
porYourSchemaName.YourTableName
dondeYourSchemaName
está el nombre real del esquema yYourTableName
el nombre real de la tabla.fuente
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
El procedimiento almacenado sp_columns devuelve información detallada de la tabla.
fuente
Puedes usar la consulta:
para obtener todos los metadatos que necesita, excepto la información de Pk.
fuente
En SQL 2012 puedes usar:
Esto le dará los nombres de columna junto con sus propiedades.
fuente
Prueba esto:
fuente
Para asegurarse de obtener la longitud correcta, deberá considerar los tipos Unicode como un caso especial. Ver el código a continuación.
Para obtener más información, consulte: https://msdn.microsoft.com/en-us/library/ms176106.aspx
fuente
Ampliando la respuesta de Alex, puede hacer esto para obtener la restricción PK
Debo haber pasado por alto que desea una bandera para determinar si la columna dada era parte de la PK en lugar del nombre de la restricción PK. Para eso usarías:
fuente
wite el nombre de la tabla en el editor de consultas seleccione el nombre y presione Alt + F1 y traerá toda la información de la tabla.
fuente
Ejecute
SELECT *
en la declaración anterior para ver qué información_esquema.columnas devuelve.Esta pregunta ha sido respondida previamente: https://stackoverflow.com/a/11268456/6169225
fuente
Estoy un poco sorprendido de que nadie mencione
fuente
fuente
Lanzando otra respuesta al ring, esto te dará esas columnas y más:
fuente
Para buscar qué columna está en qué tabla en función de su tipo de datos de búsqueda para tres tablas diferentes en una base de datos. Esta consulta se puede expandir a 'n' tablas.
fuente
Encuentra el resultado combinado para Datatype and Length y es anulable en forma de "NULL" y "Not null". Use la consulta a continuación.
Encontrará el resultado como se muestra a continuación.
Gracias.
fuente
fuente
NOTA: EN ALGUNA IDE ANTES DE SELECCIONAR N ESTÁ FUNCIONANDO O, EN ALGUNA IDE SIN N ESTÁ FUNCIONANDO
fuente
No hay una clave principal aquí, pero esto puede ayudar a otros usuarios que desean tener un nombre de tabla con el nombre del campo y las propiedades básicas del campo.
fuente
Acabo de hacer marc_s "presentación lista":
fuente