estoy notando que cuando utilizo esta declaración, la columna de la Action
no es anulable:Cómo controlar nulabilidad en SELECT INTO para las columnas basadas en literales
SELECT TOP 0 SerialNumber, 0 [Action] INTO #MyTable FROM FSE_SerialNumber
Pero cuando se utiliza esta declaración, la columna de la Action
es anulable:
SELECT TOP 0 SerialNumber, CAST(0 as int) [Action] INTO #MyTable FROM FSE_SerialNumber
Mi razón para la creación de la mesa de esta manera es porque no quiero que la tabla temporal para heredar la colación de SerialNumber de la colación por defecto del servidor o en otro lugar. Quiero que coincida con la intercalación de FSE_SerialNumber..SerialNumber.
Mi pregunta es, ¿puedo confiar en la función de conversión que me da una columna que admite nulos, o no está claramente definida y podría cambiar. ¿Por qué el yeso de repente hace que la columna sea nula? ¿Hay una mejor manera (además de los comentarios) de aclarar que mi intención es obtener una columna que acepte los valores de nulo aquí?
No sé si esto está documentado, pero en otro lugar también he visto la técnica de usar una variable en lugar de una literal para producir una columna que admite valores.Supongo que es porque la variable (como su expresión) tiene una estructura cuyos metadatos permiten valores NULL, por lo que la nueva columna también lo hace. Y si nombró su variable @NullableInt que podría manejar su problema de auto-documentación. – GilM