PDA

View Full Version : سوال: تغییر قسمتی از یک فیلد



ramin_samad
چهارشنبه 17 شهریور 1389, 13:11 عصر
سلام یک فیلدی از یک رکورد در دیتابیس به صورت زیر نوشته شده
Format, Quantity, Download, httphotfilecomdl6751339, JDownloader, speed, Premium, Photographyrar, httpwwwfileservecomfilexMy

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

Format, Quantity, Download, JDownloader, speed, Premium, Photographyrar

چطوری می تونم این کار رو انجام بدم

ahmad_eagle2002
چهارشنبه 17 شهریور 1389, 13:21 عصر
با charindex و substring ميتونيد

ramin_samad
چهارشنبه 17 شهریور 1389, 14:07 عصر
دوست عزیز میشه کدش رو بنویسید؟ ممنون میشم
یا اینکه کسی رو معرفی کنید که انجام بده هزینش هر چقدر باشه تقدیم می کنم

بهزادصادقی
چهارشنبه 17 شهریور 1389, 20:42 عصر
آیا این همان چیزی است که می خواهید؟



if object_id( 'dbo.TakeOutWordsStartingWithHttp' ) is not null
drop function dbo.TakeOutWordsStartingWithHttp;
go

CREATE FUNCTION dbo.TakeOutWordsStartingWithHttp (@list nvarchar(max))
RETURNS nvarchar(max) AS
BEGIN

DECLARE @pos int,
@nextpos int,
@valuelen int,
@item nvarchar(max),
@result nvarchar(max);

select @pos = 0, @nextpos = 1;
set @result = '';

WHILE @nextpos > 0
BEGIN
set @nextpos = charindex(',', @list, @pos + 1)
set @valuelen = CASE WHEN @nextpos > 0 THEN @nextpos ELSE len(@list) + 1 END - @pos - 1;

set @item = ltrim( substring( @list, @pos + 1, @valuelen) );

if left(@item, 4) != 'http' begin
set @result = @result + @item + ', ';
end;

set @pos = @nextpos;

END

set @result = left( @result, len(@result) - 1 );

RETURN @result;

END
go

-----------------------------
-----------------------------

declare @x nvarchar(max);
set @x = 'Format, Quantity, Download, httphotfilecomdl6751339, JDownloader, speed, Premium, Photographyrar, httpwwwfileservecomfilexMy';

select dbo.TakeOutWordsStartingWithHttp( @x );

ramin_samad
پنج شنبه 18 شهریور 1389, 07:55 صبح
سلام دوست عزیز اون قسمتی که من نوشتم ثابت نیست و تغییر می کنه بعضی از رکورد ها قسمتی به این شکل داره که با http شروع شده و می خوام حذفشون کنم از طریق phpmyadmin یا یک قطعه کد php
Format, Quantity, Download, httphotfilecomdl6751339, JDownloader, speed, Premium, Photographyrar, httpwwwfileservecomfilexMy

بهزادصادقی
پنج شنبه 18 شهریور 1389, 09:03 صبح
کد بالا به صورت عمومی نوشته شده و صورت مسئله شمارا حل می کند. فکر کنم شما دارید آن تست آخر را می بینید و فکر می کنید خود کد است. من به شما یک تابع داده ام به اسم TakeOutWordsStartingWithHttp که کاری را که می خواهید انحام می دهد. بعد دو سه خط تست هم نوشته ام که آن تابع را روی رشته بالا اعمال می کند که شما ببینید درست کار می کنه یا نه. حالا شما می توانید به جای آن رشته، هر رشته دیگری را به آن بدهید. خواهید دید که در همه رشته ها، کل کلماتی را که با http شروع می شوند را از رشته حذف می کند.

ramin_samad
پنج شنبه 18 شهریور 1389, 12:04 عصر
ممنون دوست عزیز اما چطوری می تونم این رو روی تمامی رکوردهام اعمال کنم و فیلد keyword از جدول post رو تغییر بدم آخه حدود 200 هزارتایی رکورد هستش ممنون میشم کد رو کامل بنویسید آخه من در سطح مبتدی بلدم

بهزادصادقی
پنج شنبه 18 شهریور 1389, 17:23 عصر
ممنون دوست عزیز اما چطوری می تونم این رو روی تمامی رکوردهام اعمال کنم و فیلد keyword از جدول post رو تغییر بدم آخه حدود 200 هزارتایی رکورد هستش ممنون میشم کد رو کامل بنویسید آخه من در سطح مبتدی بلدم

باید قدم به قدم بریم جلو.

قدم اول. اول کد بالا و بعد کد زیر را اجرا کن و به من بگو آیا نتیجه مطلوبی را می دهد یا خیر. این کد صد سطر از جدول شما را انتخاب می کند، و هم ستون keyword و هم نتیجه پرادزش تابع بالا روی آن ستون را کنار هم نشان می دهد. آیا کار خود را دارد درست روی آن صد سطر انجام می دهد؟



select top 100 p.keyword, dbo.TakeOutWordsStartingWithHttp( p.keyword ) from post p;

ramin_samad
پنج شنبه 18 شهریور 1389, 20:43 عصر
قبل از همه چیز تشکر کنم از کمکتون
اما من این کد رو روی phpmyadmin سایت که اجرا می کنم ارور می ده
می خواید یوزر پسورد بدم چک کنید

بهزادصادقی
پنج شنبه 18 شهریور 1389, 21:03 عصر
نه. فقط خطا را اینجا بی زحمت درج کنید.