PDA

View Full Version : سوال: یافتن و جایگزین کردن کاراکترهای متغیر



future2010
چهارشنبه 11 دی 1392, 19:36 عصر
با درود فراوان خدمت همه دوستان و اساتید گرامی

مسئله ای چند روزیست که من را درگیر خودش کرده و راه حلی براش پیدا نمیکنم
امیدوارم اینجا بتونم برای این مسئله پاسخی داشته باشم


<p> fileaddress [/img ret872154ftu]</p>
<p>[img fd68721cvn] fileaddress [/img fd68721cvn]</p>
<p>[img xdfh654t] fileaddress [/img xdfh654t]</p>
<p>[img 57d09af90] fileaddress [/img 257d09af90]</p>
<p>[img f5s7r2v1s] fileaddress [/img f5s7r2v1s]</p>
<p>[img f58rfad6y] [/img f58rfad6y]</div>


منظور خالی کردن کد بی بی از کاراکترهای غیر یکسان است.

من این را تست کردم اما نشد:

UPDATE `tabel` SET `fild` = replace(`fild`, '[img [^]*]', '[img]');
UPDATE `tabel` SET `fild` = replace(`fild`, '[/img [^]*]', '');


ممنون میشم اگر راهنمایی کنید.

SA_Developer
چهارشنبه 11 دی 1392, 22:40 عصر
سلام
تابع Replace مای اس کیو ال Regex نمیپذیره
بهتره این کارو با یه زبان برنامه نویسی مثل PHP یا ASP انجام بدید.

future2010
چهارشنبه 11 دی 1392, 22:43 عصر
این کار رو با
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '] ', -1),
' [', 1);
انجام دادم

یعنی بدین شکل
UPDATE `table`
SET `name` = CONCAT(
'<p> ',
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '] ', -1),
' [', 1),
' </p>');

حالا مشکلم اینجاست که قبل و بعد از آیتمی که میخوام Replace بشه متن قرار داره و این متن نباید آسیب ببینه

ممنون میشم اگه بتونی راهنمایی کنی

future2010
پنج شنبه 12 دی 1392, 08:23 صبح
خودم راه حل مناسبی براش پیدا کردم
اینجا به اشتراک میذارم تا شاید روزی اه گشای دوستی باشد.

UPDATE tablename
SET
name =
CONCAT(
SUBSTRING_INDEX(name, '',
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '[img', -1),
'[/img',
1),
']',
-1),
'',
SUBSTRING_INDEX(name, ']', -1)
)

برای دیدن نمونه به این صفحه مراجعه شود: http://sqlfiddle.com/#!2/25b0d/1