Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 评估“;“图像”;查询中的SQL列_C#_Sql_Linq_Linqpad - Fatal编程技术网

C# 评估“;“图像”;查询中的SQL列

C# 评估“;“图像”;查询中的SQL列,c#,sql,linq,linqpad,C#,Sql,Linq,Linqpad,我有一个数据库,其中包含一个带有“Image”列的表: 此列实际上包含一个编码为十六进制字节值的长字符串 我需要选择此列编码的字符串包含某个子字符串的所有记录。伪代码将是: Select * From SomeTable Where dataColumnofTypeImage.ToString().Contains("somesubstring") 我尝试在Linq(LinqPad)中使用以下方法实现此目的: 但如果说: NotSupportedException:方法“Byte[]ToAr

我有一个数据库,其中包含一个带有“Image”列的表:

此列实际上包含一个编码为十六进制字节值的长字符串

我需要选择此列编码的字符串包含某个子字符串的所有记录。伪代码将是:

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
    }