Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

запитване на двоична колона, като се използва като в sql сървър

Не го преобразувайте, но го третирайте като диапазон (както бихте направили стойности за дата и час)

DECLARE @foo TABLE (TestData varbinary(100) NOT NULL);
INSERT @foo (TestData) VALUES
         (0x0001DC780C0030373156635D0C00B8840301009A0600AC),
         (0x0001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA),
         (0x0001AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
         (0x0301DC780C0030373156385D0C006499C401009A0600AC),
         (0x0301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
         (0x0302000000000000000000000000000000000000000000);

SELECT *
FROM @foo
WHERE TestData >= 0x0001 AND TestData < 0x0002;

-- added more digit for clarity of what actually happens
SELECT *
FROM @foo
WHERE TestData >= 0x00010000 AND TestData < 0x00020000;

SELECT *
FROM @foo
WHERE TestData >= 0x0001AA AND TestData < 0x0001AB;

SELECT *
FROM @foo
WHERE TestData >= 0x0301 AND TestData < 0x0302;

Това има бонуса да можете да използвате индекс на TestData

Редактирайте, просто посочете толкова цифри, колкото са ви необходими



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Начини за лесно възстановяване на основната база данни в SQL Server

  2. Има ли недостатъци при използването на VARCHAR(MAX) в таблица?

  3. Заменете колоната за самоличност от int на bigint

  4. Кой е най-добрият начин за формиране на стойността на низа с помощта на колона от таблица с редове с еднакъв идентификатор?

  5. Попълване на набор от данни с имена на таблици от съхранена процедура