PDA

View Full Version : سوال: جستجوی Like اما با نادیده گرفتن عددهایی که در اول متن وجود دارد



csharpdoost
دوشنبه 26 فروردین 1392, 16:54 عصر
سوالات آزمون بصورت زیر در بانک ذخیره میشوند :

1)The first name

میخوام با جستجوی like مطلب مورد نظر رو پیدا کنم اما چون اول سوال عدد و پرانتز هستش مشکل دار شده. میشه لطفا بگید چطوری این عدد و پرانتز رو تو جستجو حذف کنم؟ البته عدد و سوالات از چپ نوشته میشه. که من نتونستم اینجا از چپ بنویسم

alexmcse
دوشنبه 26 فروردین 1392, 18:52 عصر
سلام
بعد ازاینکه عبارت جستجو را پیدا کردی اون داخل یک متغییر استرینگ بریز و اینجوری عمل کن
string s = "hellwellcom";
MessageBox.Show(s = s.Remove(3,s.Length-3 )+s.Length.ToString());

csharpdoost
دوشنبه 26 فروردین 1392, 19:11 عصر
سلام
بعد ازاینکه عبارت جستجو را پیدا کردی اون داخل یک متغییر استرینگ بریز و اینجوری عمل کن
string s = "hellwellcom";
MessageBox.Show(s = s.Remove(3,s.Length-3 )+s.Length.ToString());
ممنون . ولی مشکل همون در پیدا کردن عبارت مورد نظره. لطفا به تصویر زیر دقت کن ببین آخرین فیلد ، فیلد سوالات هستش. ولی اول هر سوال عدد و پرانتز قرار داره. میخوام وقتی در تکس باکس اولین حرف سوال رو تایپ میکنه تا جایی که پرانتز هست خودکار نادیده گرفته بشه.
102889

Amir_Developer
دوشنبه 26 فروردین 1392, 20:59 عصر
فک کنم منظورت این باشه :

string s = "12345) DELETED !";
int i, temp = 0;
for( i=0;i<s.Length;i++)
if (s.Substring(i, 1) == ")")
{
temp = i+1;
}
MessageBox.Show(s = s.Remove(0,temp));

که بعد از این کار فقط عبارت بعد از پرانتز نشون داده میشه !

csharpdoost
دوشنبه 26 فروردین 1392, 21:32 عصر
فک کنم منظورت این باشه :

string s = "12345) DELETED !";
int i, temp = 0;
for( i=0;i<s.Length;i++)
if (s.Substring(i, 1) == ")")
{
temp = i+1;
}
MessageBox.Show(s = s.Remove(0,temp));

که بعد از این کار فقط عبارت بعد از پرانتز نشون داده میشه !
ا تشکر از توجهتون .
اما این رشته رو شما از کجا آوردید و عددهای اولش رو حذف کردید؟ ما میخواهیم توی بانک اطلاعاتی رشته رو پیدا کنیم و نمیدانیم که اولش چه عددی نوشته شده؟ یعنی بنده در تکس باکس حرف D را تایپ میکنم تا رشته مورد نظر(ِDELETED) پیدا بشه.طبق تصویر بالا هر عددی ممکنه در اول رشته باشه پس باید اون عددها نادیده گرفته بشه و جستجو از حروف شروع بشه.
مثلا طبق تصویر بالا اگر بخواهم سوال شماره 19 رو جستجو کنم حرف I را باید تایپ کنم ولی بدلیل وجود عدد19و ( جستجو نتیجه یافت نمیشه.

veniz2008
دوشنبه 26 فروردین 1392, 22:28 عصر
سلام.
توجه : حتما اعداد رو دو رقمی یا 3 رقمی ثبت کنید. مثلا به جای 1 بنویسید 01 یا 001 .(با توجه به تعداد سوالاتتون).
کوئری زیر مشکل شما رو حل میکنه و 3 کاراکتر اول رو حذف میکنه.(دو کاراکتر برای عدد و یکی هم برای پرانتز).

SELECT * FROM
(
SELECT * , SUBSTRING(FieldName,4,LEN(FieldName)-3) AS a1 FROM TblTest
) Sub where a1 like '%' + @word + '%'
منظور از word@ کلمه یا حرفی هست که کاربر تایپ کرده.
حواستون باشه که این کوئری تا سوال 99 رو جواب میده اگر سوالتون بیش از 99 تاست اعداد رو 3 رقمی وارد کنید مثلا 1 میشه 001 .
موفق باشید.

Mahmoud.Afrad
سه شنبه 27 فروردین 1392, 05:38 صبح
سلام.
توجه : حتما اعداد رو دو رقمی یا 3 رقمی ثبت کنید. مثلا به جای 1 بنویسید 01 یا 001 .(با توجه به تعداد سوالاتتون).
کوئری زیر مشکل شما رو حل میکنه و 3 کاراکتر اول رو حذف میکنه.(دو کاراکتر برای عدد و یکی هم برای پرانتز).

SELECT * FROM
(
SELECT * , SUBSTRING(FieldName,4,LEN(FieldName)-3) AS a1 FROM TblTest
) Sub where a1 like '%' + @word + '%'
منظور از word@ کلمه یا حرفی هست که کاربر تایپ کرده.
حواستون باشه که این کوئری تا سوال 99 رو جواب میده اگر سوالتون بیش از 99 تاست اعداد رو 3 رقمی وارد کنید مثلا 1 میشه 001 .
موفق باشید.
البته لزومی هم نداره اعداد دو رقمی یا سه رقمی ثبت شده باشند چون میشه توسط CHARINDEX اندیس پرانتز رو بدست آورد.
اگر میخواهید با حروف مورد نظر شروع بشه:

select *
from [Table-Name]
where SUBSTRING([Column-Name] ,CHARINDEX(')',[Column-Name])+1 , len([Column-Name])-CHARINDEX(')' , [Column-Name])) like 'I%'

یا

with t
as
(
select [COLUMNS] ,
CHARINDEX(')' , [Column-Name])+1 as chIndex
from [Table-Name]
)
select [COLUMNS]
from t
where SUBSTRING(t.[Column-Name] , t.chIndex , LEN(t.[Column-Name])-t.chIndex) LIKE 'a%'

[Column-Name] نام ستونی که متن سوال در آن است.