12
votes

SQL où la clause avec binaire

J'ai une table de base de données SQL Server avec une colonne Varbinary (max) (c.-à-d. Data Varbinary (max) dans un Créer une table ).

est-il possible de faire un où la clause avec une sorte de correspondance de modèle dans les données binaires?

Par exemple, à l'aide de l'objet C # .NET SQLCOMMAND , j'ai trouvé que je peux faire une requête comme SELECT * à partir de la nappe où Data = 0x4638763849838709 GO , où la valeur est la valeur de la colonne de données complète. Mais je veux être capable de correspondre à la correspondance seulement des parties des données, telles que Sélectionnez * à partir de la nappe où les données = 0x% 3876% vont . .

merci.


1 commentaires

Les données binaires sont-elles une représentation d'un type de document / fichier spécifique?


4 Réponses :


3
votes

SQL Server ne fournit aucune fonction à rechercher dans les champs varbinary , il n'est donc pas possible.

voir Ceci associé à la question et réponses .

Essentiellement, vous devrez extraire les informations binaires et utiliser un outil qui comprend le format qu'il est dans lequel vous devez effectuer une recherche. Il ne peut pas être fait directement dans SQL Server.


0 commentaires

-1
votes

Prendre un coup dans le noir ici, mais vous pouvez convertir le champ en Varchar (MAX) en premier, puis comparé à l'aide d'une déclaration similaire.

E.g. xxx


1 commentaires

Cela n'a pas fonctionné pour moi car il essaie d'encoder la chaîne variée comme une chaîne variée, alors je reçois un gibberish au lieu d'une représentation de chaîne de la valeur hexagonale. La réponse de Martin Smith est la plus proche de ce qui a été demandé.



12
votes

Pour l'exemple que vous avez donné dans la question xxx


3 commentaires

Cela fonctionne bien lorsque vous connaissez une gamme continue spécifique de caractères hexagonaux à rechercher. Cela a fonctionné pour mon cas particulier.


C'était le cas exactement que je cherche. J'ai la valeur binaire codée qui ne peut pas être décodée, mais j'ai besoin de rechercher dans dB en utilisant cette valeur.


Mais, comment le faisons-nous avec la préparation?



0
votes
select * 
from TableName 
where CONVERT(varchar(max),Data,2) like '%3876%'

1 commentaires

Veuillez ajouter une explication sur la façon dont ce code répond à la question