补充下,就是:select * from test where test1 = '这个值该怎么在代码里给啊'
where charindex('二进制串',字段)>0
where charindex('二进制串',cast(字段 as varchar))>0
再补充下: 比如我在后台.cs代码里访问数据库,执行语句: select test1 from test where id = '1' (假设能查到对应一条记录) 然后我用一个DataTable 保存上述语句查询到的结果
接下来我想将上面查到的test1的值做为条件执行下面的SQL: select * from test where test1 = '第一条语句查到的值,这个值该怎么给' 各位大侠,速度帮忙啊,问题解决后我追加分的,大伙给力啊!!!
你查询一下(select * from test)不就知道格式了?select * from test where test1 = 0x2f34125e5000112233ff
字段类型是binary(10),表示该字段有10个字节大小 二进制和16进制的对应关系是: 一位16进制位对应4位二进制位, 二进制位的一个字节对应两位16进制位 那么binary(10)可以用20位的16进制数来表示 表结构如果是这样: 字段 类型 id int test1 binary(10) 10进制插入法: insert into table(id,test1) values(1, 1),test1内容:0x00000000000000000001(19个0) 再用16进制插入法: insert into table(id,test1) values(1,0x1),test1内容:0x01000000000000000000,后跟18个0 了解了原理,最简单的比较法就是: 1,10进制写法: select * from table where test1=1 显示结果为0x00000000000000000001(19个0) 2,16进制写法 select * from table where test1=0x1; 显示结果为:0x01000000000000000000(后跟18个0)//是插在高位的,如果要插在低位,前面要加0用10进制吧,方便人的理解和代码的编写 要显示test1的值为555的Sql语句: select * from table where test1=555 显示出来的结果是16进制表示的: 0x0000000000000000022B 上面二者16进制表示和10进制表示的值是相等的
select * from table where test1=1对应的16进制写法是: select * from table where test1=0x00000000000000000001 前面要19个0,够麻烦的
where charindex('二进制串',cast(字段 as varchar))>0
比如我在后台.cs代码里访问数据库,执行语句:
select test1 from test where id = '1' (假设能查到对应一条记录) 然后我用一个DataTable 保存上述语句查询到的结果
接下来我想将上面查到的test1的值做为条件执行下面的SQL:
select * from test where test1 = '第一条语句查到的值,这个值该怎么给'
各位大侠,速度帮忙啊,问题解决后我追加分的,大伙给力啊!!!
二进制和16进制的对应关系是: 一位16进制位对应4位二进制位, 二进制位的一个字节对应两位16进制位
那么binary(10)可以用20位的16进制数来表示
表结构如果是这样:
字段 类型
id int
test1 binary(10)
10进制插入法:
insert into table(id,test1) values(1, 1),test1内容:0x00000000000000000001(19个0)
再用16进制插入法:
insert into table(id,test1) values(1,0x1),test1内容:0x01000000000000000000,后跟18个0
了解了原理,最简单的比较法就是:
1,10进制写法:
select * from table where test1=1
显示结果为0x00000000000000000001(19个0)
2,16进制写法
select * from table where test1=0x1;
显示结果为:0x01000000000000000000(后跟18个0)//是插在高位的,如果要插在低位,前面要加0用10进制吧,方便人的理解和代码的编写
要显示test1的值为555的Sql语句:
select * from table where test1=555
显示出来的结果是16进制表示的:
0x0000000000000000022B
上面二者16进制表示和10进制表示的值是相等的
select * from table where test1=0x00000000000000000001
前面要19个0,够麻烦的