我有一个保存图像格式的表,例如:
'jpg', 'FFD8FFD8'
'png', '89504E470D0A1A0A'
我有另一个保存列类型为
image
的图像。
如何编写一个查询来将图像表中的图像与图像格式表进行比较并返回图像类型(例如 jpg 或 png)?
理想情况下,前缀列应该是
varbinary(max)
。此外,image
数据类型已被弃用,也应该是varbinary(max)
。
尽管如此,您可以使用
SUBSTRING
来检查前缀是否匹配。
SELECT *
FROM files f
JOIN formats fm
CROSS APPLY (SELECT CONVERT(varbinary(max), fm.prefix, 2)) v(prefix)
ON SUBSTRING(f.data, 1, LEN(v.prefix)) = v.prefix;