有没有办法执行类似下面的SELECT?
SELECT * FROM TheTable WHERE 3rd_to_5th_bytes_of_column_A = 0x010101;
如果出现严重的性能问题 - 请告诉我。这是一张新桌子。
(当然我可以加载所有数据并在我的C#应用程序中搜索它。我的意思是 - 有直接的方式。)
由于评论:如果该列中该行的数据为: 0x010203040506 ,则不会选择该行。但如果数据 0x010201010106 - 它会。
答案 0 :(得分:2)
或者,您也可以使用Sql Server Bitwise Operators
select * from TheTable where myColumn >= @myMask
and myColumn & @myMask <> 0
DRY违规行为是When the DRY principle doesn’t apply,与传统的where myColumn & @myMaxk <> 0
相比,性能显着提升。
出现此问题是因为执行按位操作会阻止使用索引。
答案 1 :(得分:1)
您可以使用SUBSTRING
函数 - 它也适用于二进制/ varbinary / image列。
SELECT * FROM TheTable WHERE SUBSTRING(ColumnA, 2, 3) = 0x010101