PDA

View Full Version : سوال: جستجوی شماره ها ازابتدا تا...



ehsanara
چهارشنبه 15 دی 1389, 13:34 عصر
سلام دوستان
من یه فیلد دارم که از نوع Bigint هست و یه عدد 10رقمی میگیره
من میخوام یه جستجو بزارم که کاربر چند شماره اول رو که وارد کرد بتونه تمام مواردی که شبیه اون هست رو پیدا کنه
با Like میشه این کار رو انجام داد ولی من میخوام که از ابتدای اعداد شروع به جستجو کنه
و نکته هم اینه که کاربر ممکنه یه بار 3عدد بزنه یه بار 5تا یا...
ممنون میشم راهنمایی کنید

tooraj_azizi_1035
چهارشنبه 15 دی 1389, 13:46 عصر
سلام
Like در مورد فیلدهای عددی مثل = عمل می کنه یعنی اگه 14 بزنی 1400 یا 141 یا 214 رو نمی یاره دقیقاً 14 رو انتخاب می کنه.
شما شرطت اینجوری می شه:
WHERE ID=1 OR ID=200 OR ID=231 ...

حمیدرضاصادقیان
چهارشنبه 15 دی 1389, 13:56 عصر
سلام
البته میتونید با استفاده از cast فیلد مورد نظر رو به varchar تغییر بدید و در شرط where از Like استفاده کنید.
منظورتون از اینکه از اول شروع بشه یعنی چی؟

ehsanara
چهارشنبه 15 دی 1389, 14:00 عصر
این اعداد رو فرض کن
1234567890
1232123333
1265767876
3212123233
9878767656

حالا من میخوام شرطی بزارم که زمانی که کاربر نوشت 12 بره 3تای اول رو بیاره ولی اگه نوشت 123 باید 2تای اولی رو پیدا کنه
ضمنا از ابتدای اعداد شروع کنه به جستجو ، چون 123 ممکنه بین اعداد هم باشه

tooraj_azizi_1035
چهارشنبه 15 دی 1389, 14:06 عصر
اول اینکه آیا Like در مورد Bigint مثل = رفتار می کنه؟
من تست کردم مثل = عمل می کنه. با این حساب به گفته جناب صادقیان cast انجام بده و Like رو اینجوری بنویس:


Like '123%'

ehsanara
چهارشنبه 15 دی 1389, 14:34 عصر
ID like '" + TextBox1.Text + "%'"

مرسی تو کد برنامم شرط رو اینطور نوشتم درست شد

iman_Delphi
چهارشنبه 15 دی 1389, 16:24 عصر
سلام
این کد مفیده اما یه کمی تغییرش بده و کاربردش رو بهینه کن




SELECT Cast(Columnss AS VARCHAR(10)) AS COlumns
FROM (Select 1234567890 as Columnss
Union
Select 1232123333
Union
Select 1265767876
Union
Select 3212123233
Union
Select 9878767656)a
WHERE Columnss Like '123%'

Rejnev
چهارشنبه 15 دی 1389, 17:19 عصر
اینو کسی پیشنهاد داده؟


select * from tbl
where cast(id as varchar) like '12%'

ehsanara
چهارشنبه 15 دی 1389, 23:38 عصر
دوستان از همه ممنونم
شماره هایی که من گفتم یه مثال بودن، من توی Tableی که میخوام اینکار رو انجام بدم حدود 110هزار رکورد وجود داره و دائم در حال تغییره

من توی برنامه ای که نوشتم (با سی شارپ + SQL) برا Selectی که دارم از روشی که گفتم استفاده کردم و درست شد
تعداد ارقامی که ابتدای جستجو بود با یه TextBox کاربر وارد میکنه و ادامه اون رو جستجو میکنه


Select ID From AllENt Where ID like '" + TextBox1.Text + "%'"

من دنبال % بودم که با راهنماییاتون متوجه شدم
مرسی