查询中nchar字段的条件

时间:2013-02-12 07:12:55

标签: c# database nhibernate

在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'

0 个答案:

没有答案