在db中有一个nchar字段,当与长度不等于字段长度的字符串进行比较时,我在不同数据库(Oracle和PostgreSql)中的比较存在问题。
var hash = "abcd";
var padded = hash.PadRight(36);
(1)
session.QueryOver<MessageProfile>().Where(mp => mp.Hash == hash ).SingleOrDefault()
(2)
session.QueryOver<MessageProfile>().Where(mp => mp.Hash == padded).SingleOrDefault()
On Oracle(1)为null,(2)不为,PostgreSql(2)为null,(1)不为。对于成功查询,检索到的散列长度为36个字符。我该怎么做才能解决这个问题?我唯一的想法是比较修剪值,但我觉得有更好的解决方案。
当我使用客户端(pgAdmin,Sql Developer)时,两个查询都返回结果
select * from message_profile where hash= 'abc '
select * from message_profile where hash= 'abc'