ورود

View Full Version : انتخاب چند کلمه مشخص از یک فیلد



mokh_pascal_sangesary
دوشنبه 22 آبان 1385, 12:39 عصر
سلام
من میخواهم مثلاً 10 کلمه اول یکی از فیلدهای جدید رو در یک فیلد جدا نشون بدم!
مثلاً یک جدول دارم به نام ST که 2تا فیلد داره .( Name ,Tozih)
حالا میخواهم 10 کلمه اول فیلد توضیح رو توی یک فیلد جدید داشته باشم
( اگه با فرض اینکه هر کلمه 5 کارکتر باشه و سپس بنویسم )

select name ,left(tozih,50) from st
یک مشکل پیش میاد . اونم اینه که معلوم نیستش که هر کلمه 5 کارکتر باشه یا نه :متفکر:

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

با تشکر

mokh_pascal_sangesary
سه شنبه 23 آبان 1385, 11:58 صبح
سلام
مثلاً جدول st این مقادیر رو داره

Tozih Name

علی از دانشگاه تهران به دانشگاه شیراز انتقالی گرفته است

حسن دانشجوی انصرافی هست و ورودی سال 83 میباشد

میخواهم کاری کنم که حاصل اجرای دستور sql این صورت بشه !
(یعنی فیلد name و سه کلمه اول فیلد tozih نمایش داده شود)


Tozih Name

علی از دانشگاه تهران

حسن دانشجوی انصرافی هست


ممنون میشم اگه کسی که میدونه کمک کنه

mokh_pascal_sangesary
چهارشنبه 24 آبان 1385, 13:20 عصر
سلام
کسی از این مسئله چیزی نمیدونه که حداقل یک کمی منو راهنمایی کنه؟
با این دستورات String Functions هم هر کاری میکنم نمیشه :اشتباه: !!!!!!!!!!:گریه:

mokh_pascal_sangesary
پنج شنبه 25 آبان 1385, 11:52 صبح
:متعجب:
یعنی هیچ کسی هیچ کمکی نمیتونه بکنه!:متعجب:

whitehat
پنج شنبه 25 آبان 1385, 12:33 عصر
شما بهتره از یک تابع (User Define Function )استفاده کنید .
دستور زیر را هم امتحان کنید(الان به SQL دسترسی ندارم :( )


Select Name,Left(Tozih,50) As MyDescription From ST
where MyDescription like '_____'

mokh_pascal_sangesary
پنج شنبه 25 آبان 1385, 12:46 عصر
سلام از جوابتون ممنونم ولی این که جواب نمیده!

یعنی منظور شما اینه که من یک تابع بنویسم با String Functions SQL که بتونه این کار رو انجام بده ؟

whitehat
پنج شنبه 25 آبان 1385, 13:01 عصر
سلام از جوابتون ممنونم ولی این که جواب نمیده!
ببخشید،من سوال شما را درست متوجه نشده بودم !
منظور من این بود که تابعی بنویسید که یک String گرفته و ده کلمه اول را برگرداند، با فرض اینکه کلمات با فاصله از هم جدا شده باشند.

mokh_pascal_sangesary
پنج شنبه 25 آبان 1385, 13:29 عصر
راستش زیاد حرفه ای نیستم !!:خجالت:

چه طوری میشه آخه کلمات رو مجزا کرد !:اشتباه:

asar_001
پنج شنبه 25 آبان 1385, 18:07 عصر
اگه حتما می خای تو sqlاین کارو بکنی لازمه که یه function بنویسی
اگه مجبور نیستی تو پرنامه ات این کارو بکن
function اونو اگه نتونستی بنویسی تا فردا برات مینویسم میزارم اینجا

mokh_pascal_sangesary
پنج شنبه 25 آبان 1385, 22:49 عصر
مشکل همون تابع هستش
اگه کمک کنید ممنون میشم

محمد دادودنیا
جمعه 26 آبان 1385, 00:34 صبح
تشخیص هر کلمه با فاصله های بین اون می شده تشخیص داد ولی باید مواظب دو یا تعداد بیشتری که بین دو کلمه اس باشی بعد که تابعی نوشتی که که کلمه ها رو پیدا کرد می تونی اونا رو جدا کنی
ولی را سریعش اینه

Function GetWord(S:String):TStringList;
begin
Result:=TStringList.Create;
Result.Delimiter:=' ';
Result.DelimitedText:=S;
End;

asar_001
جمعه 26 آبان 1385, 11:27 صبح
create function find3word(@st as char(50))
RETURNS char(50) AS
BEGIN
declare @i int
declare @j int
declare @c char(50)
set @i=1
set @j=1
set @c=''
while @j<4
begin
if substring(@st,@i,1)=' '
set @j=@j+1
set @i=@i+1
end
set @i=@i-1
set @c = substring(@st,1,@i)+@c
return @c
END

فقط دقت کن که تشخیص کلمات از هم با استفاده از این تابع بر اساس فاصله بین حروفه

mokh_pascal_sangesary
شنبه 27 آبان 1385, 19:18 عصر
تشخیص هر کلمه با فاصله های بین اون می شده تشخیص داد ولی باید مواظب دو یا تعداد بیشتری که بین دو کلمه اس باشی بعد که تابعی نوشتی که که کلمه ها رو پیدا کرد می تونی اونا رو جدا کنی
ولی را سریعش اینه

Function GetWord(S:String):TStringList;
begin
Result:=TStringList.Create;
Result.Delimiter:=' ';
Result.DelimitedText:=S;
End;


میشه بیشتر توضیح بدی ؟
:متفکر: