0

有没有办法执行类似以下 SELECT 的操作?

SELECT * FROM TheTable WHERE 3rd_to_5th_bytes_of_column_A  = 0x010101;

如果存在严重的性能问题 - 请告诉我。这是一张新桌子。

(当然,我可以加载所有数据并在我的 C# 应用程序中搜索它。我的意思是 - 有没有直接的方法。)

由于注释:如果该列中该行的数据为:0x010203040506,则不会选择该行。但是如果数据是0x010201010106 - 它会。

4

2 回答 2

2

或者,您也可以使用 Sql Server位运算符

select * from TheTable where myColumn >= @myMask
    and myColumn & @myMask <> 0

当 DRY 原则不适用时,违反DRY 原则,与更传统的where myColumn & @myMaxk <> 0.

出现此问题的原因是执行按位运算会阻止使用索引。

于 2013-05-22T19:59:41.133 回答
1

您可以使用SUBSTRING函数 - 它也适用于 binary/varbinary/image 列。

SELECT * FROM TheTable WHERE SUBSTRING(ColumnA, 2, 3) = 0x010101

http://msdn.microsoft.com/en-us/library/ms187748.aspx

于 2013-05-22T19:56:15.653 回答