use tmss
go
create table test
(id varchar(50),pic varchar(50), hashcode varchar(16))
insert into test values('1', '2012120910403250c3fa209bf48.jpg', 'bf8f83818080c0f1')
insert into test values('2', '2012120620430750c092db26557.jpg', 'ff9880f0f680ceff')
insert into test values('3', '2012120619582550c08861eb062.jpg', '7f7f004f7f7f7c7f')
insert into test values('4', '2012112911072650b6d16e7f21f.jpg', '7f7f004f7f7f007f')
go
其中pic字段为图片名称,hashcode是图片的感知哈希编码(16进制编码字符串,长度固定16位),用户输入一个hashcode,怎么从数据库中找出满足字符串对应位置的字符不同的个数小于5的记录呢?就像“10111”和“11101”对应位置不同字符不同的个数为2,比如
用户输入"7f7f004f7f7f00af",那么第三条和第四条记录是满足的,怎么实现呢?参数为用户输入的hashcode值,需要写存储过程吗?
go
create table test
(id varchar(50),pic varchar(50), hashcode varchar(16))
insert into test values('1', '2012120910403250c3fa209bf48.jpg', 'bf8f83818080c0f1')
insert into test values('2', '2012120620430750c092db26557.jpg', 'ff9880f0f680ceff')
insert into test values('3', '2012120619582550c08861eb062.jpg', '7f7f004f7f7f7c7f')
insert into test values('4', '2012112911072650b6d16e7f21f.jpg', '7f7f004f7f7f007f')
go
其中pic字段为图片名称,hashcode是图片的感知哈希编码(16进制编码字符串,长度固定16位),用户输入一个hashcode,怎么从数据库中找出满足字符串对应位置的字符不同的个数小于5的记录呢?就像“10111”和“11101”对应位置不同字符不同的个数为2,比如
用户输入"7f7f004f7f7f00af",那么第三条和第四条记录是满足的,怎么实现呢?参数为用户输入的hashcode值,需要写存储过程吗?
解决方案 »
- 大哥们,帮帮我啊
- 如何在myEclipse中嵌入html代码
- 在一个表中取重复记录的count ,HAVING 语句怎么写啊!
- sql anywhere 没有 table返回类型?
- sql server2005这样分区是否合理?请教高手
- 鄒建該sql語句怎樣寫簡便
- 将SQL SERVER中查询到的数据导成一个Excel文件,没有列名问题
- 数据库复制求解?
- 介绍一个提供教程、源代码下载,软件下载、发布的地方(来着有分)
- 如何在globla.asa文件里设置可以实现双数据库(ACCESS2000数据库和SQL SERVER数据库)?
- 求SQL 两个表合并 ..一条记录加入多条记录
- 好了,数据库,继续
(id varchar(50),pic varchar(50), hashcode varchar(16))
insert into test values('1', '2012120910403250c3fa209bf48.jpg', 'bf8f83818080c0f1')
insert into test values('2', '2012120620430750c092db26557.jpg', 'ff9880f0f680ceff')
insert into test values('3', '2012120619582550c08861eb062.jpg', '7f7f004f7f7f7c7f')
insert into test values('4', '2012112911072650b6d16e7f21f.jpg', '7f7f004f7f7f007f')
GOcreate FUNCTION f_test(
@input VARCHAR(50),
@value VARCHAR(50)
)
RETURNS INT
AS
BEGIN
RETURN (SELECT sum(CASE WHEN SUBSTRING(@input,number,1)=SUBSTRING(@value,number,1) THEN 0 ELSE 1 END)
FROM [master].dbo.spt_values sv WHERE sv.[type]='p' AND LEN(@input)>=number AND sv.number>0 )
ENDDECLARE @input VARCHAR(50)
SET @input='7f7f004f7f7f00af'
SELECT * FROM test t WHERE dbo.f_test(@input,hashcode)<=5
/*
id pic hashcode
-------------------------------------------------- -------------------------------------------------- ----------------
3 2012120619582550c08861eb062.jpg 7f7f004f7f7f7c7f
4 2012112911072650b6d16e7f21f.jpg 7f7f004f7f7f007f(2 行受影响)
*/DROP TABLE test
DROP FUNCTION f_test