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.

VarBinary(max) a lista de enteros

Para mi aplicación, inserto algunos valores en una columna de varbinary(max). Ahora estoy intentando recuperar los datos de allí y me gustaría obtener una lista de SQL con todos los valores.

Dentro de mi aplicación C#, realizo la siguiente tarea:

Data = ints.SelectMany(BitConverter.GetBytes).ToArray();

Luego, este Data se inserta en la base de datos.

Lo que estoy buscando es un script de SQL sobre cómo recuperar los datos, no simplemente como un blob, sino como una lista de todos los valores. Algo como esto:

SELECT * FROM RawData CROSS APPLY CastToInt(SplitBinary(RawData.Data, 4)) WHERE RawDataId = 1;

¿Alguien sabe cómo implementar este tipo de función?

Como información de antecedentes, estoy tratando de crear un gráfico de un RawData dentro de Grafana.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Script de SQL para recuperar datos de una columna varbinary(max)

    Para obtener los datos de una columna varbinary(max) en SQL Server, se puede utilizar la función CAST para convertir los datos binarios en una cadena, y luego dividir la cadena en valores individuales utilizando un delimitador. Aquí hay un ejemplo de script de SQL que puedes utilizar con este propósito:

    SELECT RawDataId, CONVERT(varchar(max), Data, 2) AS HexString
    INTO #TempTable
    FROM RawData
    WHERE RawDataId = 1;
    
    SELECT RawDataId, [Value], RowNumber
    FROM (
        SELECT RawDataId, CAST(SUBSTRING(HexString, (Number-1)*2+1, 2) AS int) AS [Value], ROW_NUMBER() OVER (ORDER BY Number) AS RowNumber
        FROM #TempTable
        CROSS APPLY master.dbo.fn_split_string(HexString, '00')
        WHERE NOT [Value] = 0
    ) AS DataValues
    ORDER BY RowNumber;
    

    Este script recupera los datos de la tabla RawData para un RawDataId específico (en este ejemplo, 1), y convierte los datos binarios en una cadena hexadecimal utilizando la función CONVERT con el argumento 2. La cadena resultante se divide en valores individuales utilizando la función fn_split_string, que es una función definida por el usuario que puedes crear en tu instancia de SQL Server. Finalmente, los valores individuales se convierten de nuevo en enteros utilizando la función CAST, y se devuelven como una lista con sus correspondientes números de fila.

    Puedes utilizar este script de SQL en conjunto con Grafana para crear un gráfico de los valores de RawData. Ten en cuenta que es posible que debas modificar el script para adaptarlo a tus necesidades específicas, como cambiar el caracter delimitador o ajustar el formato de salida.

Comments are closed.