PDA

View Full Version : سوال: اسكريپتي كه يك كاراكتر كداسكي را با كاراكتر باكداسكي ديگر Replace كند



ali_abbasi22145
سه شنبه 03 دی 1387, 09:08 صبح
سلام

كد اسكي "ك" و "ي " غلط (كه با KBDF.dll غلط تايپ شده ) و درست (KBDF.dll درست) يكي از دوستان گفته است ، حال چه اسكريپتي در SQL SERVER 2000 بنويسم كه معادل دستور زير باشد:

IF Key = #152 Then Key := #223
IF Key = #236 Then Key := #237

AminSobati
سه شنبه 03 دی 1387, 09:31 صبح
سلام،
از تابع Replace در دستور Update استفاده کنید

ali_abbasi22145
سه شنبه 03 دی 1387, 12:33 عصر
سلام
دو اسكريپت نوشتم يكي براي جايگزيني 152 , 223 و يكي براي 236 , 237 و جايگزيني را انجام داد.
آيا اسكريپتي است كه بتوان كل فيلدهاي يك جدول را يكباره تغيير داد و يكي يكي فيلدها را مثل زير ننويسم؟

UPDATE CardTable
SET
first_name = replace(first_name, 152 , 223),
--first_name = replace(first_name, 236 , 237),

last_name = replace(last_name, 152 , 223),
old_full_name = replace(old_full_name, 152 , 223),
father_name = replace(father_name, 152 , 223),
department = replace(department, 152 , 223),
assistant = replace(assistant, 152 , 223),
title = replace(title, 152 , 223),
position_of_body = replace(position_of_body, 152 , 223),
kind_of_job = replace(kind_of_job, 152 , 223),
kind_of_expire = replace(kind_of_expire, 152 , 223),
city = replace(city, 152 , 223),
city_issued = replace(city_issued, 152 , 223),
province = replace(province, 152 , 223),
company = replace(company, 152 , 223),
office = replace(office, 152 , 223),
address = replace(address, 152 , 223),
address_old = replace(address_old, 152 , 223),
picture_file_name = replace(picture_file_name, 152 , 223)

AminSobati
سه شنبه 03 دی 1387, 13:01 عصر
چیز حاضر و آماده من سراغ ندارم متاسفانه

ali_abbasi22145
سه شنبه 03 دی 1387, 13:35 عصر
سلام

1.
UPDATE CardTable
SET
first_name = replace(first_name, 152 , 223),
first_name = replace(first_name, 236 , 237)

اسكريپت بالا خطاي زير را مي دهد:
Server: Msg 264, Level 16, State 1, Line 1
Column name 'first_name' appears more than once in the result column list.

آيا راهي هست كه اين مشكل را بشود حل كرد ( با يك اسكريپت)؟ و با دو اسكريپت يعني يكي براي جايگزيني 152 , 223 و يكي براي 236 , 237 اجرا نكنم؟

2.آيا كد اسكي "ك" و "ي " غلط (كه با KBDF.dll غلط تايپ شده ) و "ك" و "ي " درست (KBDF.dll درست) براي حروف كوچك و بزرگ يكي است؟

AminSobati
سه شنبه 03 دی 1387, 23:40 عصر
تابع replace رو تو-در-تو استفاده کنید

ali_abbasi22145
یک شنبه 08 دی 1387, 09:14 صبح
>>تابع replace رو تو-در-تو استفاده کنید

سلام
1. متوجه نمي شوم ! اگر امكان دارد مثالش را انجا بگذاريد.

2.كدهاي زير هم كه براي يك مشتري خودم بانك ركورد بالا داشت تست كردم و مشكل "ك"و"ي" را متاسفانه حل نكرد.
احتمالا كدهاي اسكي بين حروف و كوچك "ك"و"ي" تفاوت است.
آيا كسي در اين باره مي تواند كمكم كند؟
IF Key = #152 Then Key := #223
IF Key = #236 Then Key := #237

ali_abbasi22145
دوشنبه 09 دی 1387, 10:45 صبح
سلام
من سر اين مورد خيلي مشكل دارم ممنون مي شوم راه حلي براي من ارائه دهيد.

AminSobati
دوشنبه 09 دی 1387, 21:19 عصر
select replcace(replace