Sql Can';在列中找不到值

Sql Can';在列中找不到值,sql,sql-server,image,Sql,Sql Server,Image,我在找一个专栏里的图片,我知道它就在那里。但是当我选择时,我找不到它。有人知道我做错了什么吗 SELECT CONVERT(VARBINARY(MAX), Picture), COUNT(*) AS Count -- convert(nvarchar,(MAX(employeeid))) FROM TABLENAME GROUP BY CONVERT(VARBINARY(MAX), Picture) HAVING COUNT(*) > 1

我在找一个专栏里的图片,我知道它就在那里。但是当我选择时,我找不到它。有人知道我做错了什么吗

SELECT
    CONVERT(VARBINARY(MAX), Picture),
    COUNT(*) AS Count    -- convert(nvarchar,(MAX(employeeid)))
FROM  
    TABLENAME
GROUP BY
    CONVERT(VARBINARY(MAX), Picture)
HAVING 
    COUNT(*) > 1
ORDER BY 
    Count
我得到一个结果和一个计数4。当我使用

Select CONVERT(VARBINARY(MAX), Picture),employeeid from TABLENAME where CONVERT(VARBINARY(MAX), Picture) = 'value from result 1'

对于select语句中的值,我什么也得不到

如果我理解正确,并且您希望标识多次使用同一图像的行,则可以执行以下操作:

WITH CTE AS(
    SELECT employeeid,
           Picture,
           COUNT(employeeid) OVER (PARTITION BY Picture) AS Entries
    FROM YourTable)
SELECT *
FROM CTE
WHERE Entries > 1;
此外,我怀疑您的查询不起作用,因为您有:

CONVERT(VARBINARY(MAX), Picture) = 'value from result 1'

这意味着您将前面的
varbinary
的值放在文字字符串引号中。值
0x01
'0x01'
相同(
在0x01='0x01'时选择大小写,然后选择1,否则0结束;
返回
0
'0x01'
varbinary
字符串表示形式,但是,如果将该值强制转换为
varbinary
,则会得到
0x3078031
当0x3078031='0x01'时选择大小写,则其他1个0结束;
返回1)。

因为正在对二进制数据执行字符串搜索,所以不会得到任何结果

where CONVERT(VARBINARY(MAX), Picture) = 'value from result 1'
左边是二进制,右边是字符串(CHAR)

您应该再次将VARBINARY转换为VARCHAR以执行字符串搜索:

Select CONVERT(VARBINARY(MAX), Picture),
       employeeid 
from TABLENAME 
where CONVERT(varchar(max),CONVERT(VARBINARY(MAX), Picture),1) = 'value from result 1'

,1
是告诉SQL server以二进制表示法返回字符串的“样式”,即在开头附加
0x
,这就是第一次查询应该如何返回“二进制字符串”。请参见

上的
二进制样式,很抱歉忘记添加此内容,MSSQL将向我们显示一些示例表数据和预期结果-所有内容都是格式化文本,而不是图像。请看一看。我想要的结果非常简单,四行具有相同的图像值和不同的员工id。在您的查询中有
employee id
?只有在使用picture列查询表时,我才需要员工id。就是这样的情况,我知道这张桌子上有重复的照片。使用第一个查询后,我知道有四个图像具有相同的值。现在我在select语句中使用该图片值来查找四个员工id,没有结果。我不知道为什么。