query – SQL SERVER – cómo hacer un UPDATE a todas las columnas de una tabla de mas de 60 columnas

Tengo el siguiente problema con un SP que realiza una actualización de todas las columnas de una tabla, el Update busca los registros vacíos y los actualiza con valor “NULL”.

El problema es que la tabla es de más de 60 columnas y para no hacer el UPDATE columna por columna, utilicé el siguiente Query Dinámico:

!– language: lang-sql –>

DECLARE @col NVARCHAR(4000) =”, @query NVARCHAR(4000) =”

        SELECT @col= @col+
            c.NAME+' = CASE WHEN '+c.NAME+' like ''""'' OR '+c.NAME+' like ''''  THEN NULL ELSE '+c.NAME +' END,
        '
        FROM  sys.columns c
        JOIN sys.tables t
        ON t.object_id = c.object_id
        WHERE t.name = 'personas'
        and c.name not like 'UserId'
        and c.name in ('FirstName',
                        'LastName',
                        'BirthDate',
                        'Gender',
                        'Email',
                        'Identification',--... hasta la columna 30

        SET @col =LEFT(@col,LEN(@col)-6)

        SET @query = 'update personas 
        SET 
            '
        SET @query = @query+@col

        SET @query = REPLACE(@query, 'Authorization', '(Authorization)')


        --PRINT @query
        EXEC sp_executesql  @query

Y posterior a ese primer query hice este segundo query dinámico:

!– language: lang-sql –>

    set @col =''
        set @query=''

        SELECT @col= @col+
            c.NAME+' = CASE WHEN '+c.NAME+' like ''""'' OR '+c.NAME+' like ''''  THEN NULL ELSE '+c.NAME +' END,
        '
        FROM  sys.columns c
        JOIN sys.tables t
        ON t.object_id = c.object_id
        WHERE t.name = 'personas'
        and c.name not like 'UserId'
        and c.name not in ('FirstName',
                        'LastName',
                        'BirthDate',
                        'Gender',
                        'Email',
                        'Identification', --... hasta la columna 30

        SET @col =LEFT(@col,LEN(@col)-6)

        SET @query = 'update personas 
        SET 
            '
        SET @query = @query+@col

        SET @query = REPLACE(@query, 'Authorization', '(Authorization)')

        --PRINT @query
        EXEC sp_executesql  @query

Como ven, es un poco enredado y complejo, pero fue la mejor forma que encontré para solucionar este problema y contener la posibilidad que en un futuro esta tabla me llegue con otras columnas y que este UPDATE se actualice automáticamente.

En los detalles verán que tuve que usar los dos query, para partir el proceso en dos porque la cadena NVARCHAR(4000) no era suficiente para el UPDATE que se genera el código entonces a través del parámetro in y no in partí el proceso en dos.

La pregunta entonces que me permito hacer a la comunidad es preguntarles si existe otra forma más eficiente de programar este UPDATE en el SP de forma tal que la tabla que me llegue que de entrada se que van a ser mas de 60 columnas, pueda actualizar todas las columnas, buscando registros vacíos y reemplazándoos por el valor “NULL”

Muchas gracias por su tiempo.

Demostrar que las hileras con más de un símbolo repetido es regular, sobre el alfabeto {0,1,2,3,4,5,6}

He estado intentando resolver este problema, tengo que demostrarlo con un automata, se que tengo que hacer un NFA por facilidad, pero solo creo que tengo la expresión regular, alguno me puede ayudar?

Yo cree la expresión regular (0*|1*|2*|3*|4*|5*|6*)*, pero no sé si es correcta

typescript – ¿Cómo puedo manejar las ventanas remotas de agora io para darle estilos en angular?

Actualmente estoy trabajando con agora io en angular
Necesito crear usuarios pero uno de ellos es el administrador de la sala por lo cual necesito que su vista abarque más en la pantalla que los demás remotos pero no se como identificarlo o manejar estilos diferentes para los usuarios

r – Incorporar resultado de regresión lineal en otro dataframe y de donde obtengo los nombres de las variables

Tengo el siguiente data frame en donde se encuentran los datos:

set.seed(666)
tabla_a <-data.frame(matrix(sample(1:5,3000,replace = TRUE), ncol=30))

y otro data frame en donde quiero guardar el resultado de cada una de las regresiones con las variables especificadas con la siguiente sentencia:

lm.beta(lm(formula = dependiente ~ independiente, data = tabla_b))$standardized.coefficients(2)
dependiente = c("X1","X1","X1","X1","X1")
independiente = c("X2","X3","X12","X20", "X21")
tabla_b = data.frame(dependiente, independiente)

¿Alguien podría decirme como incorporar a tabla_b el resultado de la regresion como una columna adicional?
Muchas gracias!

mysql – como calcular las horas entre fechas en postgresql

Necesito calcular las horas entre dos fechas, pero solo necesito que me calcule cuantas horas pasaron en un rango especifico, el cual seria de 8:00 hrs a 18:00 hrs.

He visto este código que creo que puede funcionar pero no se como restringir para que solo me cuente las horas en ese intervalo.

He probado con esto:

SELECT DATE_PART('day', '2011-12-30 08:55'::timestamp - '2011-12-30 09:05'::timestamp) * 24 + DATE_PART('hour', '2011-12-30 08:55'::timestamp - '2011-12-30 09:05'::timestamp);

Esta se supone que me daría cuantas horas han pasado de las 8:55 a las 9:05, pero me arroja 0.

Soy novato en esto de base de datos, muchas gracias

plugin – Necesito un plug para “VIM” que me autocomplete o auto-cierre las llaves, corchete etc

Hola y muy buenas tardes a todos, estoy aca para preguntarles si alguien me podria indicar algun autocompletado o bueno auto-cerrado de llaves para “VIM”, corchete etc, enfocado en “JS” aunque igual deberia funcionar en cualquier lenguaje

Llevo trabajando con “VIM” Hace un par de semanas asi que me considero muy nuevo todavia y no en logrado poder encontrar ese plug, o alguna config que ya venga con “VIM” Agradezco su ayuda!

python – buscar el contenido de un archivo en uno nuevo e imprimir las coincidencias

Tengo dos archivos archivo 1

ST,Sample
876,SRR9831338
689,AW72
599,AW71
4,AW73
129,H38
121,SRR9831336
1,SRR9831339
1,SRR9831337
1,SRR9831335
0,BB17
0,AW77

Y archivo 2

ST,CC,Lineage,
999,CC554,I,
998,ST998,III,
997,CC7,II,
996,CC193,II,
995,CC7,II,
994,CC155,II,
993,ST993,II,
992,CC217,I,
991,ST991,II,
990,ST990,II,
99,CC7,II,

¿Cómo puedo hacer para que busque las coincidencias de la columna uno y lo imprima en un nuevo archivo?; en donde se anexe sample del archivo1 y CC, Lineage del archivo2.