如何在 SQL Server 中比较 varchar 和 varbinary?

问题描述 投票:0回答:1

我有一个保存图像格式的表,例如:

'jpg', 'FFD8FFD8'
'png', '89504E470D0A1A0A'

我有另一个保存列类型为

image
的图像。

如何编写一个查询来将图像表中的图像与图像格式表进行比较并返回图像类型(例如 jpg 或 png)?

sql-server sql-server-2022
1个回答
0
投票

理想情况下,前缀列应该是

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;

db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.