عملیات روی فیلد رشته ای در بانک
سلام دوستان. من توی بانکم یه فیلد رشته ای دارم که توی اون متن های فارسی و انگلیسی و عددی ذخیره شده. حالا میخوام این رشته ها را توی برنامه بخونم و همه را طبق مثال های زیر برعکس کنم. جدا کننده کلمات این رشته ها هم هر کاراکتری میتونه باشه. مثلا / یا ـ یا * و ...
میخوام مثلا 112*01 را تبدیل کنم به 01*112 یا 78-000-7586 را تبدیل کنم به 7586-000-78
نقل قول: عملیات روی فیلد رشته ای در بانک
شما یه فانکشن تعریف کن که این کار رو انجام بده یعنی یک ورودی بگیره و خروجی بده
بعدش کل تیبل رو با این فانکشن آپدیت کن
update tblname set fieldname=fn_functionname(filedname)
نقل قول: عملیات روی فیلد رشته ای در بانک
این را میدونم دوست خوبم اما مهم نوشتن اون تابعه. چه کدی باید واسه تابع بنویسم که بتونه این رشته های در هم و بر هم را درست کنه؟
نقل قول: عملیات روی فیلد رشته ای در بانک
از تابع CHARINDEX استفاده کنید و مکان * ها رو پیدا کنید سپس از تابع SUBSTRING برای جدا کردن اون قسمت استفاده کنید.
مثال برای charindex
کد HTML:
DECLARE @document varchar(64);SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document); GO
مثال برای SUBSTRING
کد HTML:
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%' ORDER BY LastName;
نقل قول: عملیات روی فیلد رشته ای در بانک
ممنون مهدی جان. اما این charindex چکار میکنه؟ کاراکترهای جداکننده متن من مختلفه(بیش از 10 کاراکتر جدا کننده) و معلوم هم نیست این کاراکتر دقیقا کجای متن باشه
نقل قول: عملیات روی فیلد رشته ای در بانک
دوستان کسی راهی به ذهنش نمیرسه؟
نقل قول: عملیات روی فیلد رشته ای در بانک
برای اینکار شما باید از 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]);
}
نقل قول: عملیات روی فیلد رشته ای در بانک
عالی دوست من. حالا اگه بخوام این رشته های split شده به هم بچسبن و از آخر به اول بیان باید چکار کنم؟ مشروط بر اینکه کاراکترهای جداکننده هم توی رشته تولیدی باشه.
مثلا رشته gl*kp-om;pp با متد شما میشه چهار تا رشته pp , om ,kp , gl اما من میخوام خروجیم بشه pp;om-kp*gl
نقل قول: عملیات روی فیلد رشته ای در بانک
کسی از دوستان چیزی میدونه؟
نقل قول: عملیات روی فیلد رشته ای در بانک
بچه ها توراخدا کمککککککککککک
نقل قول: عملیات روی فیلد رشته ای در بانک
مشکل من هنوز پابرجاست. کسی از دوستان نمیتونه کمک کنه
نقل قول: عملیات روی فیلد رشته ای در بانک