2012-03-14 18 views

Respuesta

4

No. Hay formas de codificarlo más rápido, pero no hay atajos como usted implica. Tomado de an answer I gave on dba.stackexchange:

DECLARE @tb NVARCHAR(255), @sql NVARCHAR(MAX); 

SET @tb = N'dbo.[table]'; 

SET @sql = N'SELECT * FROM ' + @tb + ' WHERE 1 = 0'; 

SELECT @sql = @sql + N' OR ' + QUOTENAME(name) + ' IS NULL' 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID(@tb); 

EXEC sp_executesql @sql; 
+0

No funcionará en SQL Server 2005, pero es de esperar que OP sepa qué hacer al respecto. –

+0

@Andriy Gracias. Corregido Me atrapo en eso todo el tiempo, a veces lo extraño. En este caso, lo copié de una pregunta que fue para el 2008. –

+0

De nada. :) –

0

Eso depende de lo que los medios más rápidos.

Si quiere decir que es más rápido ejecutar SQL Server, una cosa que podría hacer es escribir un activador que actualiza una columna de bit que especifica si la fila completa (que no sea el bit y la clave principal) es NULL. Sin embargo, debería haber una buena razón para esto, ya que afectará su rendimiento de actualización. Los índices en esas columnas también ayudarían.

Si quiere decir escribir más rápido, puede hacer que SQL genere la cláusula where para usted. Pero, a menos que hagas esto mucho, no vale la pena el tiempo, en mi opinión.

1

Enseñanza-a-peces-lugar-de-dar-te-la-peces tipo de respuesta aquí:

Una forma de hacerlo es mediante la creación de un procedimiento almacenado que se ensambla y se ejecuta una consulta dinámica.

el procedimiento almacenado:

  • tener un nombre de tabla como parámetro de entrada.
  • consultar las tablas del sistema de metadatos para la estructura de tabla específica.
  • ensamblar dinámicamente una cadena (la consulta real) con las instrucciones OR para las columnas de esa tabla.
  • ejecutar la consulta ensamblada y devolver el resultado.
2

Puede encontrar los nombres de columna usando algo como esto:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table_name> 

Entonces, me gustaría escribir un procedimiento que utiliza este, y que se bucle a través de las entradas de la tabla y los nombres de las columnas.

Fuente: http://codesnippets.joyent.com/posts/show/337

Cuestiones relacionadas