View Full Version : سوال: پیدا کردن عدد در یک ستون با فرمت خاص
siavashman
سه شنبه 16 شهریور 1389, 18:24 عصر
جدولی به نام table1 ستونی به نام ab
توی این ستون اطلاعاتی با فرمت text زیر هست:
,3,4,5,6,7,1,4,
چه جوری باید بگیم عددهایی که تو این ستون مثلا بین 2 و 5 هستند رو برگردونه؟
من از این استفاده کردم ولی جواب درستی بهم نمیده:
select * from table1 where ab >="%2%" and ab <="%5%"
چی کار کنم؟:متفکر:
siavashman
چهارشنبه 17 شهریور 1389, 17:19 عصر
چرا هیچکی جوابما نمیده؟
ahmadpj
جمعه 19 شهریور 1389, 10:19 صبح
تو اپلیکشین میخوای این اعداد رو پیدا کنی یا با sql؟
ahmadpj
جمعه 19 شهریور 1389, 12:54 عصر
دستور sql با یک خط اینجوری جواب نمیده، باید کرسر درست کنی و رکوردها رو پیمایش کنی و دنبال اعداد بگردی
تو اپلیکیشن راحت تره، اما با sql هم میشه.
فرض من اینه که اسم جدولت table3 و اسم فیلدت ab باشه و رکوردهات چنین فرمتی دارن:
3,4,5
6,7,9,10
3,6,11,45,23
این دستورها جواب میده:
DECLARE @L1 varchar(100)
DECLARE @d1 varchar(50)
-- یک کرسر تعریف می کنیم برای پیمایش جدول
DECLARE MyCursor CURSOR FOR
SELECT ab FROM table3
OPEN MyCursor
-- همه ی رکوردها رو می خونیم و توی یک متغیر ذخیره می کنیم
set @l1=''
FETCH NEXT FROM MyCursor INTO @d1
WHILE @@FETCH_STATUS = 0
BEGIN
if @l1 = ''
begin
set @L1 = Cast(@d1 As varchar(50))
end
else
begin
set @L1 = @l1 +','+ Cast(@d1 As varchar(50))
end
FETCH NEXT FROM MyCursor INTO @d1
END
CLOSE MyCursor
DEALLOCATE MyCursor
-- حالا متغیر l1 یک استرینگه که همه ی اعداد اون فیلد در کل رکوردها رو داره
-- باید در متغیر l1 بگردیم و اعداد رو از بین ویرگول ها جدا کنیم تا آخر
DECLARE @x int
DECLARE @pos1 int
DECLARE @c varchar(50)
DECLARE @rem varchar(1000)
set @rem=@l1
set @c='a'
set @x=1
set @pos1=1
--print @rem
while len(@rem) >0
begin
set @pos1= charindex(',',@rem,1)
if @pos1 =0
begin
if cast(@rem as int)> 2 and cast(@rem as int)< 5 print @rem
break
end
else
begin
-- print @pos1
-- print @x
set @c= substring(@rem,1, @pos1-1)
if cast(@c as int)> 2 and cast(@c as int)< 5 print @c
set @rem= substring(@rem,@pos1+1,len(@l1) )
-- print 'rem= '+ @rem
set @x=@pos1+len(@c)
end
end
اگه باز هم مشکلی بود، بگو تا بیشتر توضیح بدم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.