У меня есть таблица в моей базе данных, в которой есть два столбца, а именно данные и длина. Я объявляю данные как VARBINARY(MAX) и предполагаю, что в таблице есть запись с длиной, равной 5, и данными = 0x23 0x00 0x12 0x45 0x34.

Определение таблицы:

CREATE TABLE [dbo].[tbInputFile] (
  [InputFileID] [varchar](512) NOT NULL,
  [Filename] [varchar](512) NULL, 
  [Filesize] [bigint] NULL, 
  [Content] [varbinary](max) NULL
);

Вопрос:

Можно ли выполнить поиск (с помощью запроса SELECT), чтобы найти записи, в столбце данных которых есть 0x00 0x12?

2
javad 4 Янв 2016 в 17:28

2 ответа

Лучший ответ

Попробуйте этот SQL-запрос. Внутренняя таблица содержит тестовые данные с двоичным типом данных. 0x48 - это данные, которые я ищу в столбце test_col1.

SELECT T.* 
FROM
    (SELECT CAST('Hello' AS VARBINARY(MAX)) AS test_col1,
            CAST('World' AS VARBINARY(MAX)) AS test_col2) AS T
     WHERE CAST(test_col1 AS VARCHAR(MAX)) LIKE '%' + CAST(0x48 AS VARCHAR(MAX)) + '%'
2
fabulaspb 4 Янв 2016 в 15:33
select * 
from tbInputFile 
where convert(varchar(max), content,2) like '%00%' 
   or convert(varchar(max), content,2) like '%12%'
0
Michael Riley - AKA Gunny 27 Июл 2020 в 14:56