PDA

View Full Version : تابع Replace



niksoft
سه شنبه 19 تیر 1386, 16:17 عصر
میخام در این متن فقط عدد آخر آن را بدست آورم man_150 برای این کار میخوام بگم هر چیزی که قبل از _ هست رو پاک کن تا عدد 150 بدست بیاد

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

ealireza
سه شنبه 19 تیر 1386, 17:41 عصر
این کارو با SQL میخای بکنی !!!!
این کار با Regex انجام میشه ! و توصیه میکنم از زبان های برنامه نویسی کمک بگیر
#C و...

موفق باشید

AminSobati
سه شنبه 19 تیر 1386, 22:10 عصر
اگر جای _ همیشه ثابته (یعنی مثلا کاراکتر چهارم)، میتونین بوسیله SUBSTRING براحتی اینکار رو انجام بدین. اگر _ جاهای متفاوت ممکنه قرار بگیره، به کمک CHARINDEX موقعیتش رو بدست بیارین و بعد از SUBSTRING استفاده کنین

niksoft
سه شنبه 19 تیر 1386, 23:18 عصر
نه مشکل اینه که نمیدونم _ ممکنه کجا باشه
این Query رو نوشتم ولی جواب نمیده
Declare @Str nvarchar(100)
Select @Str = '180/412545_22'
Select @Str = Replace(@Str,'%[_]','')
Select @Str
:اشتباه:

MajerajooyeKhallagh
چهارشنبه 20 تیر 1386, 07:59 صبح
نه مشکل اینه که نمیدونم _ ممکنه کجا باشه
این Query رو نوشتم ولی جواب نمیده
Declare @Str nvarchar(100)
Select @Str = '180/412545_22'
Select @Str = Replace(@Str,'%[_]','')
Select @Str
:اشتباه:

دوست عزیز شما باید از کواری مانند کواری زیر استفاده کنید:


selectsubstring('man_150',Charindex('_','man_150') +1,len('man_150')-Charindex('_','man_150'))


حال در این کواری,به جای عبارت 'man_150' باید نام فیلد را بگذارید مانند کواری زیر:

selectsubstring(FieldName,Charindex('_',FieldName) +1,len(FieldName)-Charindex('_',FieldName))
From TableName
و اگر از این کواری در استوردپراسیجر استفاده میکنید و لازم دارید که از عبارت Charindex('_',FieldName) چندین بار و در جاهای مختلفی از مقدار آن استفاده کنید, توصیه میکنم که مقدار ان را یکبار و در یک متغیر نگه دارید تا از کار اضافی توسط اسکیوال جلوگیری شود,چون استفاده از توابع مربوط به String بر روی داده های از نوع String زمانبر میباشد چیزی شبیه به کواری زیر :

DECLARE @Index TINYINT
SELECT @Index=CHARINDEX('_','man_150')
SELECTSUBSTRING('man_150',@Index+1,len('man_150')-@Index)


امیدوارم که تونسته باشم کمکتون کنم
موفق باشید