2011-04-23 28 views
9
binarios

Tengo una tabla de base de datos de SQL Server con una columna varbinary(max) (es decir, Data VarBinary(max) en un comando create table).Cláusula WHERE de SQL con

¿Es posible hacer una cláusula where con algún tipo de coincidencia de patrón dentro de los datos binarios?

Por ejemplo, usando el objeto C# .NET SqlCommand, encontré que puedo hacer una consulta como select * from TableName where Data = 0x4638763849838709 go, donde el valor es el valor de columna de datos completo. Pero quiero que el patrón coincida solo con partes de los datos, como select * from TableName where Data = 0x%3876% go.

Gracias.

+0

¿Son los datos binarios una representación de un tipo de documento/archivo específico? –

Respuesta

3

SQL Server no proporciona ninguna función para buscar en los campos VARBINARY, por lo que no es posible.

Ver this preguntas y respuestas relacionadas.

Esencialmente, deberá extraer la información binaria y utilizar una herramienta que entienda el formato en que se encuentra para buscar a través de ella. No se puede hacer directamente en SQL Server.

0

Tomando una foto en la oscuridad aquí, pero podría convertir el campo a VARCHAR (MAX) primero, y luego comparar usando una declaración LIKE.

E.g.

SELECT * 
FROM TableName 
WHERE CONVERT(VARCHAR(MAX), Data) LIKE '%2345%' 
7

Para el ejemplo que han dado en la pregunta

WITH t(c) AS 
(
SELECT CAST(0x4638763849838709 AS VARBINARY(MAX)) 
) 
SELECT * 
FROM t 
WHERE CHARINDEX(0x3876,c) > 0