C# 评估“;“图像”;查询中的SQL列
我有一个数据库,其中包含一个带有“Image”列的表: 此列实际上包含一个编码为十六进制字节值的长字符串 我需要选择此列编码的字符串包含某个子字符串的所有记录。伪代码将是:C# 评估“;“图像”;查询中的SQL列,c#,sql,linq,linqpad,C#,Sql,Linq,Linqpad,我有一个数据库,其中包含一个带有“Image”列的表: 此列实际上包含一个编码为十六进制字节值的长字符串 我需要选择此列编码的字符串包含某个子字符串的所有记录。伪代码将是: Select * From SomeTable Where dataColumnofTypeImage.ToString().Contains("somesubstring") 我尝试在Linq(LinqPad)中使用以下方法实现此目的: 但如果说: NotSupportedException:方法“Byte[]ToAr
Select *
From SomeTable
Where dataColumnofTypeImage.ToString().Contains("somesubstring")
我尝试在Linq(LinqPad)中使用以下方法实现此目的:
但如果说:
NotSupportedException:方法“Byte[]ToArray()”不支持到SQL的转换
我简直不敢相信在Where子句中检查二进制数据类型是不可能的,就像我可能检查其他数据类型一样
有人能帮我吗
where p.Contains(System.Text.ASCIIEncoding.ASCII.GetString("EXED"))
这可能就是您正在尝试执行的操作的代码,它是否有效取决于您的图像字符串。我所知道的唯一方法是使用直接sql和子字符串 例如,类似于:
string str1 = @"
select
Idnr,
Udatum,
Uzeit,
Unr,
Uart,
Ubediener,
Uzugriff,
Ugr,
Uflags,
Usize,
Udata
from Zanus
where Udata is not null
and SubString(Udata, 1 , 2147483647) like '%EXED%'" ;
var query1 = this.ExecuteQuery<Zanus>(str1);
(from z in query1
select new
{
z.Idnr,
z.Udatum,
z.Uzeit,
z.Unr,
z.Uart,
z.Ubediener,
z.Uzugriff,
z.Ugr,
z.Uflags,
z.Usize,
z.Udata
}
string str1=@”
选择
Idnr,
乌达图姆,
乌泽特,
Unr,
Uart,
乌贝迪纳,
乌祖格里夫,
Ugr,
Uflags,
使用,
乌达
来自扎努斯
其中Udata不为null
和类似“%EXED%”的子字符串(Udata,12147483647);
var query1=this.ExecuteQuery(str1);
(从查询1中的z开始)
选择新的
{
z、 Idnr,
z、 乌达图姆,
z、 乌泽特,
z、 Unr,
z、 Uart,
z、 乌贝迪纳,
z、 乌祖格里夫,
z、 Ugr,
z、 Uflags,
z、 使用,
z、 乌达
}
注意,如果搜索字符串在一列中,而不是在前2147483647字节中,这将失败(但如果这些是图像,我认为这不应该引起关注).您希望ToString表示法看起来是什么样子?我希望是
System.Linq.Binary
或二进制数据的字符解释,而不是二进制数据本身,因此即使它会编译您的代码,也仍然是错误的。您尝试过PatIndex而不是Contains吗?@Ed@shsmith问题不在于字符串操作本身。我似乎无法首先从列中获取数据。请检查我下面的注释,以了解示例数据、其可读表示形式以及我遇到的问题。您是否想过如何在SQL中编写此操作?LINQ to SQL将LINQ转换为SQL,因此,如果在SQL中无法做到这一点,您就是snookered.不起作用。例如:code
0x320010000000000000200b000012ff0000300000343000000000703000003300000040000000000A8413400000004000000000C07F44350000000040000000000A041FE01040000009825E53B000040000E00000000FE00006000000454B74436000000000000000000000000哪个政府code
在我对EKGD部分感兴趣的地方,0???p0???3???D5???;EKGD6???code
。但是,我得到一个错误code
NotSupportedException:方法'Byte[]ToArray()'不支持转换为SQL。code
它让我发疯……谢谢你的建议……我明天会尝试一下。非常感谢你的建议。SQL查询返回了我所期望和需要的记录。在Linq中运行时出现了一些问题,但这是语法和缺少的括号或;这里和那里。真的吗非常有用!
string str1 = @"
select
Idnr,
Udatum,
Uzeit,
Unr,
Uart,
Ubediener,
Uzugriff,
Ugr,
Uflags,
Usize,
Udata
from Zanus
where Udata is not null
and SubString(Udata, 1 , 2147483647) like '%EXED%'" ;
var query1 = this.ExecuteQuery<Zanus>(str1);
(from z in query1
select new
{
z.Idnr,
z.Udatum,
z.Uzeit,
z.Unr,
z.Uart,
z.Ubediener,
z.Uzugriff,
z.Ugr,
z.Uflags,
z.Usize,
z.Udata
}