es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Especificando el valor JSON en una consulta OPENJSON de SQL.

Estoy insertando datos en una tabla utilizando datos de un archivo JSON. Quiero establecer una columna de bits llamada isMain a 1 al mismo tiempo. Intenté hacerlo utilizando el código de abajo, pero me arroja un error que dice que es una sintaxis incorrecta. ¿Cómo podría lograr esto?

INSERT INTO Company
(
    OrganizationNumber,
    Name,
    IsMain
)
SELECT company.*
FROM OPENROWSET(BULK '<ruta hacia el archivo json>', SINGLE_NCLOB) AS j
CROSS APPLY OPENJSON(BulkColumn)
WITH (
    organizationNumber NVARCHAR(255) '$.organizationNumber',
    name NVARCHAR(255) '$.name',
    isMain BIT '$.isMain'
)
AS company;
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para establecer la columna de bits isMain en 1 al mismo tiempo que se insertan datos desde un archivo JSON, puedes modificar el código de la siguiente manera:

    INSERT INTO Company
    (
        OrganizationNumber,
        Name,
        IsMain
    )
    SELECT company.*,
           1 AS IsMain
    FROM OPENROWSET(BULK '<ruta al archivo JSON>', SINGLE_NCLOB) AS j
    CROSS APPLY OPENJSON(BulkColumn)
    WITH (
        organizationNumber NVARCHAR(255) '$.organizationNumber',
        name NVARCHAR(255) '$.name'
    )
    AS company;
    

    En el código modificado, la columna IsMain se establece en 1 utilizando una declaración SELECT, y la cláusula WITH en la función OPENJSON no incluye la columna isMain ya que su valor siempre es 1. Esto debería permitir que los datos se inserten en la tabla con la columna de bits establecida en 1 sin generar errores de sintaxis.

Comments are closed.