我在这里遇到了这样的情况,我需要检查sys.database\u principals表中是否存在该用户,但要基于其sid。我试着执行简单的查询。
SELECT * FROM sys.database_principal where [sid] = '0x............'
但它什么也没回来。因为sid是varbinary(85)。我需要一些转换。
ux6nzvsh1#
不要将二进制文字括在引号中。否则,该值将被视为字符串文本而不是二进制文本。sid varbinary(85)数据类型的数据类型优先级低于varchar文本,因此sid值将从binary转换为varchar进行比较,结果字符的比较将不相等。更正的查询:
SELECT * FROM sys.database_principal WHERE [sid] = 0x............;
1条答案
按热度按时间ux6nzvsh1#
不要将二进制文字括在引号中。否则,该值将被视为字符串文本而不是二进制文本。
sid varbinary(85)数据类型的数据类型优先级低于varchar文本,因此sid值将从binary转换为varchar进行比较,结果字符的比较将不相等。
更正的查询: