PDA

View Full Version : سوال: تبدیل داده ی نوع varchar به nvarchar و حذف فضای اضافی



hamid-nic
چهارشنبه 12 اسفند 1388, 11:49 صبح
سلام دوستان ، وقتتان بخیر
من یک جدولی در بانک اطلاعاتی sql 2000 دارم که 2 تا از فیلد های آن را با فرمت Varchar ساخته بودم و حدود 1000 رکورد با آن ثبت کردم اما الان که آن را تبدیل Nvarchar کردم هنوز فاصله های اضافی که در موقع varvhar بودن رکورد بوجود آمده وجود دارد یعنی مثلا اگر نوع فرمت را varchar10 بگیریم و یک رکوردی مثل حمید را در آن ثبت کنیم به این صورت ثبت می کند "حمید_____ " یعنی خود کلمه + تا حداکثر فضای اون با فاصله پر می شود . حال که این فیلد را به nvarchar تبدیل کردم هنوز فاصله های اضافی وجود دارد آیا راهی وجود دارد که بصورت دسته جمعی تمام این فاصله ها را از بین برد ؟
ممنون

محمد سلیم آبادی
چهارشنبه 12 اسفند 1388, 12:51 عصر
سلام،
اگر ستون از نوع CHAR باشه این اتفاق می افته (پر شدن فضای باقیمانده از طول رشته با کاراکتر space) ولی وقتی از پیشوند VAR به معنای variable (متغیر) استفاده میشه این فضا خالی (Blank) رها میشه.

به هر حال میتونید از این کد استفاده کنین:
UPDATE table_name SET column_name = REPLACE(column_name, ' ', '') WHERE 1=1

hamid-nic
چهارشنبه 12 اسفند 1388, 15:26 عصر
خیلی ممنون اجرا کردم و جواب داد . لطفا میشه یکمی درباره این دستور توضیح بدید .

UPDATE table_name SET column_name = REPLACE(column_name, ' ', '') WHERE

محمد سلیم آبادی
چهارشنبه 12 اسفند 1388, 16:59 عصر
دستور UPDATE ساده ایست که با کمک تابع replace تمام کاراکتر های space مقادیر ستون مورد نظر رو حذف می کنه و سپس ویرایش می کند.

hamid-nic
چهارشنبه 12 اسفند 1388, 18:42 عصر
دستور UPDATE ساده ایست که با کمک تابع replace تمام کاراکتر های space مقادیر ستون مورد نظر رو حذف می کنه و سپس ویرایش می کند.
با اجرای این دستور حتی فاصله ی بین کلمات هم بر داشته شد . مثلا اگر کلمه "امینی پژوه" باشد بعد از اجرای این دستور به "امینیپژوه" تبدیل میشه !!:متفکر:

محمد سلیم آبادی
چهارشنبه 12 اسفند 1388, 19:09 عصر
البته در مثالی که زدین تنها یک کلمه وجود داشت.
اینو امتحان کنید:

UPDATE table_name SET column_name = SUBSTRING(column_name, 1, LEN(column_name)) WHERE 2 * 2 = 4; --d

hamid-nic
پنج شنبه 13 اسفند 1388, 09:10 صبح
البته در مثالی که زدین تنها یک کلمه وجود داشت.
اینو امتحان کنید:

UPDATE table_name SET column_name = SUBSTRING(column_name, 1, LEN(column_name)) WHERE 2 * 2 = 4; --d
خیلی ممنون
این را امتحان کردم دیگه فاصله ی بین کلمه ها باقی می مونه و مشکلی نداره.

ali_ahr7
جمعه 14 اسفند 1388, 12:22 عصر
سلام خسته نباشيد.كد هاتون خيلي خوبن.لطفا دريارشون توضيح بدين.متشكرم