ورود

View Full Version : تغییر نوع فیلد



نیما حتمی
پنج شنبه 21 دی 1391, 13:14 عصر
با سلام
من یه جدول دارم که 1 سال دیتا داره توش وارد میشه که نوع یکی از فیلداش varchar هستش
حالا چطور میتونم varchar رو به int تغییر بدم
تو design رفتم تغییر دادم نشد
راهش چیه؟

alimahlouji
پنج شنبه 21 دی 1391, 13:19 عصر
سلام
از چه روشی برای ساخت Database استفاده کردی؟
CodeFirst یا DatabaseFirst یا ModelFirst؟

نیما حتمی
پنج شنبه 21 دی 1391, 13:27 عصر
از exel ایمپورت کردم و جدولشو تو design درست کردم بهشون نوع دادم و .......

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 15:09 عصر
از exel ایمپورت کردم و جدولشو تو design درست کردم بهشون نوع دادم و .......
پیغامی که نمایش میده چی هست؟
آیا تمام کاراکترهای مقدار مذکور رقم هستند یا غیر از کاراکترهای 0 - 9 نیز کاراکتری وجود دارد؟

نیما حتمی
پنج شنبه 21 دی 1391, 16:49 عصر
'Data' table
- Warning: Data might be lost converting column 'ShomareP' from 'nvarchar(255)'.
بله یکسریشون کارکترهای نقطه و یا فاصله در اول و یا آخرشون دارن
استاد باید چیکار کنم؟

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 16:54 عصر
بله یکسریشون کارکترهای نقطه و یا فاصله در اول و یا آخرشون دارن
چاره ای جزء حذف این کاراکتر ها قبل از عمل convert نیست.
برای حذف کاراکترهای مورد نظر کد زیر رو اجرا کنید:
Update TableName Set ShomareP = REPLACE(REPLACE(ShomareP, ' ', ''), '.', '') WHERE CHARINDEX('.', ShomareP) > 0 OR CHARINDEX(' ', ShomareP) > 0;

نیما حتمی
پنج شنبه 21 دی 1391, 20:56 عصر
استاد باز اینو میگه:
- Warning: Data might be lost converting column 'ShomareP' from 'nvarchar(255)'.
منظورش چیه؟

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 21:34 عصر
از هشداری که میده مشخص هست که هنوز کاراکترهایی خارج از 0-9 در رشته وجود داره. شما کوئری زیر رو اجرا کنید اگر نتیجش برابر بود با 1 یعنی هنوز کاراکترهایی غیر از 0-9 در رشته وجود داره، که باید حذف بشن.

SELECT 1 WHERE EXISTS (SELECT * FROM table_name WHERE column_name LIKE '%[^0-9]%');

نیما حتمی
پنج شنبه 21 دی 1391, 21:51 عصر
بله عدد 1 رو نشون داد
چیکار باید کرد؟

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 22:01 عصر
کد زیر رو اجرا کنید و مقادیر سطرهای برگشتی رو بررسی کنید ببینید چه کاراکتری به غیر از 0-9 در اونها وجود داره. اون کاراکترها رو بدست بیارین و توسط کوئری که در پست 6 هست آنها را حذف کنید.

SELECT column_name FROM table_name WHERE column_name LIKE '%[^0-9]%'

نیما حتمی
پنج شنبه 21 دی 1391, 22:13 عصر
استاد 18 سطر هست که حروف و عدد حروف و اینها هستش چطور از بین ببرمشون؟

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 22:36 عصر
شوخی میکنین؟
مگه اولش نگفتین فقط یه چنتا space اول و آخر رشته خورده و نهایتا چنتا نقطه؟! حالا که وضع فرق کرد.
دو راه دارین، یکی اینکه بیایین دستی این 18 ردیف رو خودتون اصلاحش کنید (کاراکتر های حروف رو حذف کنید) که فک نمیکنم کار مشقت آوری باشه، راه دوم اینه که از کوئری نسبتا پیچیده ای برای حذف کاراکتر های ناخواسته استفاده کنید که نمونش در این چالش (http://barnamenevis.org/showthread.php?375692-%D9%87%D8%B4%D8%AA%D9%85%DB%8C%D9%86-%DA%86%D8%A7%D9%84%D8%B4-SQL-(%D8%A7%D8%B5%D9%84%D8%A7%D8%AD-%D8%B1%D8%B4%D8%AA%D9%87))مطرح شده.
18 تا چیزی نیست که. بشینین با حوصله ترتیبشو بدین :لبخندساده: