PDA

View Full Version : عملیات روی فیلد رشته ای در بانک



code_project
جمعه 27 شهریور 1394, 11:56 صبح
سلام دوستان. من توی بانکم یه فیلد رشته ای دارم که توی اون متن های فارسی و انگلیسی و عددی ذخیره شده. حالا میخوام این رشته ها را توی برنامه بخونم و همه را طبق مثال های زیر برعکس کنم. جدا کننده کلمات این رشته ها هم هر کاراکتری میتونه باشه. مثلا / یا ـ یا * و ...
میخوام مثلا 112*01 را تبدیل کنم به 01*112 یا 78-000-7586 را تبدیل کنم به 7586-000-78

mahdi87_gh
جمعه 27 شهریور 1394, 12:33 عصر
شما یه فانکشن تعریف کن که این کار رو انجام بده یعنی یک ورودی بگیره و خروجی بده
بعدش کل تیبل رو با این فانکشن آپدیت کن

update tblname set fieldname=fn_functionname(filedname)

code_project
جمعه 27 شهریور 1394, 13:18 عصر
این را میدونم دوست خوبم اما مهم نوشتن اون تابعه. چه کدی باید واسه تابع بنویسم که بتونه این رشته های در هم و بر هم را درست کنه؟

mahdi87_gh
جمعه 27 شهریور 1394, 18:01 عصر
از تابع CHARINDEX استفاده کنید و مکان * ها رو پیدا کنید سپس از تابع SUBSTRING برای جدا کردن اون قسمت استفاده کنید.
مثال برای charindex

DECLARE @document varchar(64);SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document); GO

مثال برای SUBSTRING

SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%' ORDER BY LastName;

code_project
جمعه 27 شهریور 1394, 21:33 عصر
ممنون مهدی جان. اما این charindex چکار میکنه؟ کاراکترهای جداکننده متن من مختلفه(بیش از 10 کاراکتر جدا کننده) و معلوم هم نیست این کاراکتر دقیقا کجای متن باشه

code_project
دوشنبه 30 شهریور 1394, 06:21 صبح
دوستان کسی راهی به ذهنش نمیرسه؟

Seyyed_H_T
دوشنبه 30 شهریور 1394, 09:43 صبح
برای اینکار شما باید از regex استفاده کنید:



const string sentence = "10/ cats, 20| dogs, 40\\ fish; and; 1/ programmer.";

var parts = Regex.Split(sentence, @"[\*\-\\\/\,\;\|]");

for (var i = parts.Length; i > 0; i--)
{
Console.WriteLine(parts[i - 1]);
}

code_project
دوشنبه 30 شهریور 1394, 16:16 عصر
عالی دوست من. حالا اگه بخوام این رشته های split شده به هم بچسبن و از آخر به اول بیان باید چکار کنم؟ مشروط بر اینکه کاراکترهای جداکننده هم توی رشته تولیدی باشه.
مثلا رشته gl*kp-om;pp با متد شما میشه چهار تا رشته pp , om ,kp , gl اما من میخوام خروجیم بشه pp;om-kp*gl

code_project
سه شنبه 31 شهریور 1394, 06:28 صبح
کسی از دوستان چیزی میدونه؟

code_project
سه شنبه 31 شهریور 1394, 09:23 صبح
بچه ها توراخدا کمککککککککککک

code_project
دوشنبه 27 مهر 1394, 08:26 صبح
مشکل من هنوز پابرجاست. کسی از دوستان نمیتونه کمک کنه

code_project
دوشنبه 27 مهر 1394, 09:04 صبح
:گریه::گریه::گریه: