0

你会认为两者都会带来相同的结果。但这并不是因为转换正在修剪 2 个零,因此第 2 个不会返回结果,因为它将 446641 与 446641 进行比较

select memberID, 
            Photo as PhotoBlob 
    from    SomeTable
WHERE memberId = '00446641'

Select  memberID, 
        Photo as PhotoBlob 
from    SomeTable
WHERE memberId = convert(char(13), 00446641) - this is trimming off the 2 zeros

无论出于什么奇怪的原因,memberID 都不是 int,而是该表中的 char(13)

更新

这是上下文:

public static MemberPhoto RetrieveMemberPhotoFromBlob(Int64 contractNumber)
{
    Database db = DatabaseFactory.CreateDatabase(Config.DbConnectionString_MemberPhotos);

    using ( DbCommand cmd = db.GetSqlStringCommand(string.Format(@" Select  memberID, 
                                                                            Photo as PhotoBlob 
                                                                    from    SomeTable
                                                                    WHERE memberId = convert(char(13), @{0})","memberID")))
    {
        try
        {
            db.AddInParameter(cmd, "@contractNumber", DbType.Int64, contractNumber);
4

1 回答 1

0

根据要求,

如果该字段包含有意义的前导/尾随 0,则您不能在 UI 代码中使用整数来表示 char(13) 字段。这是一个字符字段。这不是一个 int 字段。在模型中使用字符串。这是一个有点经典的错误,例如尝试使用 int 表示电话号码。你就是做不到——有些人可能会在电话号码前面放一个前导 0,电话号码以 0 结尾,等等

于 2012-11-14T23:07:28.677 回答