PDA

View Full Version : ميشه اعداد خالي بين دو عدد رو بدست آورد؟



combo_ci
دوشنبه 28 بهمن 1387, 23:12 عصر
سلام
من يه جدول دارم كه توش يه فيلد int دارم ...بين اين اعداد بعضي از شماره ها پاك شده...راهي هست كه اي نن شمارههاي خالي رو بدست آورد؟

AminSobati
سه شنبه 29 بهمن 1387, 02:52 صبح
http://www.barnamenevis.org/forum/showthread.php?p=335327

taheri-ali
سه شنبه 29 بهمن 1387, 12:51 عصر
select * from TableName where len(FieldName)<1

combo_ci
چهارشنبه 30 بهمن 1387, 13:42 عصر
نه منظورم اينه كه اولين شماره خالي رو بدست بيارم
مثلا 0 1 2 4 5 6
نتيجه 3 برگردونه

mannai29
چهارشنبه 30 بهمن 1387, 16:46 عصر
راه های زیادی هست . فکر کنم کرسر راه خوبی باشه . شما تک تک رکوردها رو می خونین و رقمش رو با یک متغیر که در هر Fetch کردن یکی زیاد میشه چک می کنین . اگه جواب مثبت نبود در یک جدولی ذخیرش می کنین... و در نهایت فیلدهای جدول خروجی نهایی تون میشه.

accpascal
چهارشنبه 30 بهمن 1387, 17:19 عصر
یک مثال از روش پیمایش جدول به این صورت می باشد


with query1 do
begin
active:=false;
sql.clear;
sql.add('select num from adb');
sql.add('order by num');
open;
while not eof do
begin
with query2 do
begin
active:=false;
sql.clear;
sql.add('select *from adb');
sql.add('where num=:num');
parameters.ParamByName('num').Value:=query1.fieldb yname('num').asinteger-1;
open;
if recordcount=0 then
if query1.fieldbyname('num').asinteger <> 0 then
memo1.Lines.Add(inttostr(query1.fieldbyname('num') .asinteger-1));
end;
next;
end;
end;

combo_ci
پنج شنبه 01 اسفند 1387, 12:00 عصر
declare @i as int
set @i=1

WHILE (@i<80)
BEGIN
IF NOT EXISTS(SELECT CAST(Code AS int) AS code FROM HessabGroup WHERE (CAST(Code AS int) = @i))
BEGIN
Print @i
BREAK
END
ELSE
set @i=@i+1
END


من از اين كد استفاده كردم ولي فكر كنم سرعتش پايين باشه
كسي راه بهتري يراغ نداره؟

mdrd
پنج شنبه 01 اسفند 1387, 16:51 عصر
اگه مثل مثالی که زدی بین اعداد یک عدد کم باشه مثل 1و2و3و5و7و8 (4و6 کمه) اینطوری میشه رفت


SELECT TOP 1 MyNumber FROM MyTable T1
WHERE MyNumber + 1 NOT IN
(SELECT MyNumber FROM MyTable T2 WHERE T2.MyNumber = T1.MyNumber + 1)
ORDER BY MyNumber ASC


ولی اگر بیشتر از یک عدد کم باشه مثل 1و2و7و8و9



set @MaxValue = Max(numberfield)
set @TestValue = 1
open cursor on recordset ordered by numberfield
foreach numberfield
while (numberfield != @testvalue) and (@testvalue < @MaxValue) then
Insert @testvalue into #temp table
set @testvalue = @textvalue + 1
Next
Next

Select values from #temptable

combo_ci
پنج شنبه 01 اسفند 1387, 20:42 عصر
استفاده از كرسر آخرين راه هست به نظر من.....سرعت پاييين كرسر و مشكلات خاص اوون استفاده از اونو منتفي ميكنه !

رضا عربلو
جمعه 02 اسفند 1387, 00:30 صبح
طبق این مقاله http://www.barnamenevis.org/forum/showthread.php?p=335327 یک جدول از اعداد 1 تا n را بدست آورید و آنرا با جدول خود Join کنید.

Microsoft.net
جمعه 02 اسفند 1387, 23:12 عصر
select * from TableName where len(FieldName)<1

جلل خالققققققققق !

combo_ci
جمعه 02 اسفند 1387, 23:35 عصر
اقاي مهندس يه كم پست ها رو ميخوندي بد نبودااا ;)
سوال اينه:
اولين شماره خالي روي يك عددي رو چجوري ميشه بدست آورد !

accpascal
شنبه 03 اسفند 1387, 08:46 صبح
;)
سوال اينه:
اولين شماره خالي روي يك عددي رو چجوري ميشه بدست آورد !
\
پست 6 که من یک نمونه کد گذاشتم تمام اعداد را می ده خوب با کمی تغییر که نیاز به توضیح نداره می تونی اولین عدد را بدست بیاوری