0

あなたは2つが両方とも同じ結果をもたらすと思うでしょう。しかし、これは、変換が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

リクエストごとに、

char(13) フィールドに意味のある先頭/末尾の 0 が含まれている場合、そのフィールドを表すために UI コードで整数を使用することはできません。char フィールドです。int フィールドではありません。モデルで文字列を使用します。これは、int を使用して電話番号を表現しようとするような、やや古典的な間違いです。あなたはそれをすることはできません-電話番号の前に0を付けたり、電話番号を0で終わらせたりする人もいます。

于 2012-11-14T23:07:28.677 に答える