转换前导零的修剪

时间:2012-11-07 17:17:40

标签: tsql

你认为这两者都会带来相同的结果。但这并不是因为转换正在削减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);

1 个答案:

答案 0 :(得分:0)

按要求,

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