PDA

View Full Version : Convert



salmanmp
سه شنبه 17 مهر 1386, 12:07 عصر
سلام
می خوام رو یه جدول که یه ستون به اسم Value داره (nvarchar) و مقدارش هر چیزی ممکنه باشه یه سلکت بزنم که اگر مقدار، عددی بود و مثلاً مساوی دوازده صدم بود بهم برگردونه :
مثلاً این شکلی

CONVERT(decimal, dbo.FSFFields.Value) = 0.12

مشکل اینه که error میده که نمی تونم تبدیل کنم nvarchar رو به عدد (برای بعضی رکوردها). چی کار کنم ؟
:گیج:

پ.ن.: کمک !

AminSobati
سه شنبه 17 مهر 1386, 15:04 عصر
دوست عزیزم،
بررسی کنید که این "بعضی رکوردها" چه شرایط ویژه ای دارند. مثلا آیا کاراکتر داخلشون هست یا ...
ضمنا خطایی که دریافت میکنید چی هست

salmanmp
سه شنبه 17 مهر 1386, 15:28 عصر
دوست عزیزم،
بررسی کنید که این "بعضی رکوردها" چه شرایط ویژه ای دارند. مثلا آیا کاراکتر داخلشون هست یا ...
ضمنا خطایی که دریافت میکنید چی هست

میگه: Error converting datatype nvarchar to numeric
بعدم چیز ویژه ای تو اون رکوردها نیست !
نیگا؛ یه سری تاریخ توشونه یه سری عددن یه سری یه لیستند مثل 23,423,34,23,2 ....
ممنون

AminSobati
سه شنبه 17 مهر 1386, 23:34 عصر
متن خطا نشون میده که کاراکتر داخلش هست. شاید تابع Replace بتونه کمکتون کنه

salmanmp
پنج شنبه 26 مهر 1386, 11:38 صبح
اصلاً صورت سوال رو عوض می کنم !
تو همون جدول می خوام تمام ردیف هایی رو بر گردونه که مقداری که توشونه می تونه به عدد تبدیل بشه !
میشه یه همچین کاری کرد ؟

AminSobati
پنج شنبه 26 مهر 1386, 12:16 عصر
کنترل چنین چیزی برای هر رکورد شاید چندان راه حل ایده آلی نداشته باشه اما با این روشها هم میتونین رکوردهای نامطلوب رو کنار بگذارین (با فرض اینکه کاراکترهای مزاحم، حروف باشند):


declare @x table (c1 varchar(100))
insert @x select 'test1'
insert @x select '1'
insert @x select '0'
insert @x select '12'
insert @x select 'test2'

select case
when c1 like '%[a-z]%' then 'STRING'
else c1
end
from @x

select * from @x
where c1 not like '%[a-z]%'

در صورتی که کاراکترهای اضافی دیگه ای هم وجود داره میشه با شرطهای بیشتر کنار گذاشتشون

salmanmp
شنبه 28 مهر 1386, 13:48 عصر
ممنون
تو C++ و زبونای هم خوانوادش وقتی داری چند تا شرط رو با هم چک می کنی که بینشون && (AND) هست وقتی یه شرط false باشه دیگه سراغ باقی شرط ها نمی ره !
میخوام ببیتم تو SQL هم همین طوره یا نه ؟

AminSobati
شنبه 28 مهر 1386, 15:30 عصر
چه کاری با این قابلیت قصد دارین در SQL Server انجام بدین؟

salmanmp
یک شنبه 29 مهر 1386, 08:15 صبح
می خوام چک کنم اگر مقدار عددی بود اونوقت تبدیلش کنم به عدد و با یه مقداری مقایسش کنم ! تا دیگه اون اررور رو نده !

AminSobati
یک شنبه 29 مهر 1386, 09:58 صبح
از تابع isnumeric استفاده کنین