你认为这两者都会带来相同的结果。但这并不是因为转换正在削减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);
答案 0 :(得分:0)
按要求,
如果该字段包含有意义的前导/尾随0,则不能在UI代码中使用整数来表示char(13)字段。这是一个char领域。它不是一个int字段。在模型中使用字符串。这是一个经典的错误,比如尝试使用int来表示电话号码。你不能这样做 - 有些人可能会在电话号码前设置前导0,电话号码以0结尾等等