PDA

View Full Version : حرفه ای: سوال در مورد SQL Server



Reza_Yarahmadi
سه شنبه 02 شهریور 1389, 11:57 صبح
سلام
قبل از هر چيز از مديران معذرت ميخوام كه اين سوال رو اينجا مطرح ميكنم ولي بدليل عجله زياد و فعاليت كم تالار SQL Server مجبور شدم به اينجا متوسل بشم.(توي اون تالار هم مطرحش كردم!)
توي يك برنامه نياز دارم بخشي از يك فيلد varbinary رو بخونم. نكته اينجاست كه نبايد ابتدا كل فيلد رو بخونم و بعد بخش مورد نظر رو جدا كنم.(حتي توي SQL Server)
يكي از دوستان گفت بايد كاري كني كه SQL Server فقط بخش مورد نظر رو از روي هارد بخونه.
حالا مشكل اينجاست كه من چطور ميتونم SQL Server رو وادار كنم كه فقط بايت هاي مورد نظر خودم رو بخونه نه بيشتر؟؟
دوستان در اين مورد و يا اگه روش ديگه اي سراغ داريد ممنون ميشم كمكم كنيد

ایمان مدائنی
سه شنبه 02 شهریور 1389, 12:48 عصر
من شخصا براي قسمت قسمت كردن فيلدهاي داتابيسم از ( , ) بين قسمتها استفاده ميكنم در اين صورت هم ميتونم گل فيلد رو بخونم و هم قستمهايي از فيلد رو

mmd2009
سه شنبه 02 شهریور 1389, 12:55 عصر
با سلام.

این فیلد varbinary باینری هست. varchar نیست که بشه این کارو کرد. البته شاید هم بشه :چشمک:

ایمان مدائنی
سه شنبه 02 شهریور 1389, 13:00 عصر
فكر كنم بشه ها ...:ناراحت:
از كسي شنيدم ميشه ...:چشمک:

mmd2009
سه شنبه 02 شهریور 1389, 13:04 عصر
خب ببین این روش اصلا اصولی نیست.

فرض کن تو یک مقدار رشته ای چندتا , وجود داشته باشه که اصلا مربوط به حدا کردن یک بخش نباشه؟؟؟ اونقوت چه اتفاقی میفته؟؟؟

باید روش های اصولی جایگزین بشن.

پس مشخصا باید گفت این روش با غیر ممکن فرقی نداره.

Reza_Yarahmadi
سه شنبه 02 شهریور 1389, 13:51 عصر
دوستان من نميخوام اطلاعات رو جدا كنم! يك مقدار روي صورت سوال دقت كنيد!!:چشمک:
توي اين فيلد فايلهاي تقريبا حجيم ريخته ميشه و من براي ارسال اين فايلها به كلاينتها (بنا به دلايلي) مجبورم بخش بخش فايل رو بفرستم. حتي SQL Server هم نبايد كل فيلد رو بخونه و بعد بخش بخش كنه.
براي اين كار چند روش هست ولي به كار من نمياد مثلا ميشه با دستور زير بخشي از فيلد رو خوند

Select Substring(FieldName, 100, 200) From TableName
اين دستور 200 بايت (بايتهاي بين 100 تا 300)رو ميخونه ، ولي اين دستور اول تمام فيلد رو توي خودش لود ميكنه و بعد بخش مورد نظر من رو ازش جدا ميكنه(تازه اين جداي از مشكلات Casting و ...). من ميخوام SQL Server فقط 600 بايت مورد نظر رو از روي هارد بخونه و اطلاعات اضافه تري خونده نشه.

Reza_Yarahmadi
چهارشنبه 03 شهریور 1389, 10:14 صبح
مشكل تقريبا حل شد.
براي كاري كه ميخواستيم از دستور Substring به صورت زير استفاده كرديم.

Select Substring(FieldName, @Offset, @Len) From TableName
قبلا فكر ميكرديم اين دستور اول كل فيلد رو ميخونه بعد بخش مورد نظر رو جدا ميكنه ولي بعد از جستجوهاي بسيار!! به اين نتيجه رسيديم كه فقط همون بخشي كه ما ميخوايم رو ميخونه.