Sql server 转换的sql查询(varbinary,[login])
我有sql查询来检查用户的权限Sql server 转换的sql查询(varbinary,[login]),sql-server,Sql Server,我有sql查询来检查用户的权限 select column 1 ,column 2 ,column 3 ,column 4 from usertable where convert(varbinary, [login]) = convert(varbinary, 'demo_RBC') 此查询不返回任何reocrd,尽管表中有demo_RBC条目。相同的查询适用于任何其他字符串,如demo_BDCA或demo_avm 在where子句的比较中,demo\u RBC字符串不起作用有什么具体原
select column 1 ,column 2 ,column 3 ,column 4 from usertable where convert(varbinary, [login]) = convert(varbinary, 'demo_RBC')
此查询不返回任何reocrd,尽管表中有demo_RBC条目。相同的查询适用于任何其他字符串,如demo_BDCA或demo_avm
在where子句的比较中,demo\u RBC字符串不起作用有什么具体原因吗?是否有更好的wat来检查登录条件。您可以通过排序来实现这一点,即
COLLATE SQL\u Latin1\u General\u CP1\u CS\u AS
下面是一个示例来演示:
declare @var nvarchar(max)
set @var = 'Hello'
SELECT 1
WHERE 'HELLO' COLLATE SQL_Latin1_General_CP1_CS_AS = @var
set @var = 'HELLO'
SELECT 1
WHERE 'HELLO' COLLATE SQL_Latin1_General_CP1_CS_AS = @var
不工作怎么办?错误?或者只是不匹配?非常确定varbinary区分大小写你确定它是100%匹配吗?如果
login
未存储在varbinary中,为什么需要转换以进行比较?是否值得检查[login]字段是否有任何字符,如尾随空格、换行符等?是否尝试进行区分大小写的比较?您希望指定这样做的排序规则,而不是将字符串转换为二进制格式。是的,我正在尝试进行区分大小写的比较。您能告诉我如何修改查询以使用排序规则吗