「圖像」 SQL列我有一個包含有「圖像」式柱的表的數據庫: 評估在查詢
此列實際上包含編碼爲HEX字節值的長字符串。
我需要選擇由此列編碼的字符串包含特定子字符串的所有記錄。僞代碼將是:
Select *
From SomeTable
Where dataColumnofTypeImage.ToString().Contains("somesubstring")
我嘗試使用要做到這一點Linq中(LinqPad):
from z in Zanus
let p = z.Udata.ToArray() // z.Udata will be of type System.Linq.Binary so I want to make a byte array out of it...
where System.Text.ASCIIEncoding.ASCII.GetString(p).Contains("EXED")
select new
{
z.Idnr,
z.Udatum,
z.Uzeit,
z.Unr,
z.Uart,
z.Ubediener,
z.Uzugriff,
z.Ugr,
z.Uflags,
z.Usize,
z.Udata
}
但是,這並不在所有的工作說:
NotSupportedException異常:方法「字節] ToArray()'沒有支持到SQL的轉換。
我簡直不敢相信這是不可能的檢查二進制數據類型在WHERE子句中,就像我可以檢查一些其他的數據類型...
有人可以幫我在這裏?
你會期望ToString表示看起來像什麼?我期望'System.Linq.Binary'或二進制數據的字符解釋,而不是二進制數據本身,所以即使它編譯你的代碼仍然是錯誤的。 – 2011-05-28 23:24:02
您是否試過PatIndex而不是Contains? http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.patindex.aspx – hsmiths 2011-05-28 23:31:16
@Ed @shsmith問題不在於字符串操作本身。我似乎無法首先從列中獲取數據。請檢查我的評論下面的示例數據,其人類可讀的代表性和我有的問題。 – Kris 2011-05-29 08:33:57