View Full Version : تبديل يا تغيير از varchar به نوع عددي يا float
hamzehsh
چهارشنبه 27 شهریور 1392, 16:22 عصر
سلام
يك فيلد از جدول دارم كه مقاديرم رو توش نگهداري ميكنم. اين مقادير شامل عدد و كاراكتر ميشه.
وقتي select ميزنم ميخوام فقط عددهاشون رو بهم بده و يا اينكه كاراكترهاي اضافه رو حذف كنه و فقط عدد بمونه و نمايش بده.
31
4.7
77
<0.1
@578
اينها نمونه هستند.
البته من يك function نوشتم ولي درست كارنميكنه.
ALTER FUNCTION [dbo].[CastValue] (@valu float)
RETURNS float
AS
BEGIN
Declare @x varchar
Declare @y float
set @x = replace(@valu,'<>/?,`~!@#$%^&*()-_=+\|[]{}',0)
SET @y =CONVERT(float,@x)
Return @y
END
محمد سلیم آبادی
چهارشنبه 27 شهریور 1392, 16:45 عصر
http://www.dotnettips.info/post/1187/%D8%AD%D8%B0%D9%81-%D9%86%D9%85%D9%88%D8%AF%D9%86-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1-%D9%87%D8%A7%DB%8C-%D9%86%D8%A7%D8%AE%D9%88%D8%A7%D8%B3%D8%AA%D9%87-%D8%AA%D9%88%D8%B3%D8%B7-recursive-cte-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84
lastmory
چهارشنبه 27 شهریور 1392, 16:46 عصر
.
وقتي select ميزنم ميخوام فقط عددهاشون رو بهم بده و يا اينكه كاراكترهاي اضافه رو حذف كنه و فقط عدد بمونه و نمايش بده.
با سلام
اگر میخوای فقط عدد ها رو بهت بده و اونایی که چیزی قاطیش شده نشون نده میتونی از ISNUMERIC استفاده کنی
اینجوری
select * from tbl1 where isnumeric(f0)=1
hamzehsh
چهارشنبه 27 شهریور 1392, 17:31 عصر
ممنون دوست من
اين تابع فقط مقادير عددي رو برميگردونه.
من ميخوام فقط عددش رو برگردونه و بقيه چيزهاش رو حذف كنه.
saeid.gh
چهارشنبه 27 شهریور 1392, 20:01 عصر
به نظر من یک جدول با ساختار tbl1 ایجاد کن به نام tbl2 و
insert into tbl2
select * from tbl1
where isnumeric(f0)=1
محمد سلیم آبادی
جمعه 29 شهریور 1392, 03:44 صبح
ما بقی کاراکتر ها رو خودتان به جدول اضافه کنید:
alter FUNCTION [dbo].[CastValue] (@valu varchar(300))
RETURNS float
AS
BEGIN
declare @t table(nbr int,c char(1))
insert @t values (1,'<'), (2,'>'), (3,'/'),
(4,','),(5,''''),(6,'~');
--'<>/?,`~!@#$%^&*()-_=+\|[]{}'
declare @c char(1), @n int = 1
while @n <= (select count(*) from @t)
begin
select @c = c from @t where nbr = @n
set @n += 1
set @valu = replace(@valu,@c,'')
end
Return @valu
END
hamzehsh
دوشنبه 01 مهر 1392, 11:31 صبح
ممنون ولي اين پيام رو ميده
Msg 170, Level 15, State 1, Procedure CastValue, Line 9
Line 9: Incorrect syntax near ','.
Msg 139, Level 15, State 1, Procedure CastValue, Line 13
Cannot assign a default value to a local variable.
Msg 137, Level 15, State 2, Procedure CastValue, Line 15
Must declare the variable '@n'.
Msg 137, Level 15, State 2, Procedure CastValue, Line 17
Must declare the variable '@n'.
فكر ميكنم اون اينزرت يكجاييش درست نيست
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.