Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 转换的sql查询(varbinary,[login])_Sql Server - Fatal编程技术网

Sql server 转换的sql查询(varbinary,[login])

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字符串不起作用有什么具体原

我有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字符串不起作用有什么具体原因吗?是否有更好的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]字段是否有任何字符,如尾随空格、换行符等?是否尝试进行区分大小写的比较?您希望指定这样做的排序规则,而不是将字符串转换为二进制格式。是的,我正在尝试进行区分大小写的比较。您能告诉我如何修改查询以使用排序规则吗