如题表中有两个字段《油斑》《油迹》,类型都是float,值为 .34 和 2.11现有一个函数,需要拼接字符串,也要用到上面的字段值,但是经过函数处理过后,上面的值变为了0 和 2,怎么回事。函数部分如下:
returns varchar(8000)
as
begin
declare @sql varchar(8000);set @sql=''
select @sql=@sql+ltrim(层位)+':'+ltrim(str(井深1))+
'-'+ltrim(str(井深2))+' 油斑'+ltrim(str(isnull(油斑,0.00)))+'米 油迹'+ltrim(str(isnull(油迹,0.00)))+'米;<br>'
from QX where 井号=@井号
return @sql
end
returns varchar(8000)
as
begin
declare @sql varchar(8000);set @sql=''
select @sql=@sql+ltrim(层位)+':'+ltrim(str(井深1))+
'-'+ltrim(str(井深2))+' 油斑'+ltrim(str(isnull(油斑,0.00)))+'米 油迹'+ltrim(str(isnull(油迹,0.00)))+'米;<br>'
from QX where 井号=@井号
return @sql
end
Select Round('0.256333',3)
Declare @Number float
Select @Number=0.3433
Select Convert(Varchar,@Number)
Select Convert(Varchar,Round(@Number,2))
--没那么复杂,直接用连个系统函数就行了
Select @Number=0.3433
Select Convert(Varchar,@Number)
Select Convert(Varchar,Round(@Number,2))
Select str(@Number)
函数用错了SQL SERVER 中str函数的用法
STR函数主要用于返回与指定数值表达式对应的字符。
语法
STR(nExpression [, nLength [, nDecimalPlaces]])
参数
nExpression
STR( ) 要计算的数值表达式。
nLength
STR( ) 返回的字符串长度。该长度包括小数点所占的字符和小数点右边每个数字所占的字符。
如果指定长度大于小数点左边数字位数,STR( ) 用前导空格填充返回的字符串;如果指定长度小于小数点左边的数字位数,STR( ) 返回一串星号,表示数值溢出。
nDecimalPlaces
由 STR( ) 返回的字符串中的小数位数。若要指定小数位数,必须同时包含 nLength。
如果指定的小数位数小于 nExpression 中的小数位数,则截断多余的数字。
返回值类型
字符型
当数字转换为字符串时,始终为 Number 的符号保留一个前导空格。如果 Number 为正,则返回的字符串包含前导空格,并暗含加号。负数将包括减号 (-),且没有前导空格。
使用 Format 函数转换您需要格式化为日期、时间或货币或者其他用户定义格式的数值。与 Str 函数不同,Format 函数不包含用于 Number 的符号的前导空格。
值得注意的是,Str 函数只将句点 (.) 识别为有效的小数点分隔符。如果使用其他小数点分隔符(例如在国际应用程序中),请使用 CStr 或 Format 函数将数字转换为字符串。若要获得特定区域中数字的字符串表示形式,请使用数字的 ToString(IFormatProvider) 方法。例如,将 Double 类型的值转换为字符串时,使用 ToString。
declare @a decimal(10,4)
set @a=.1234
select cast(cast(@a*100 as varchar)as varchar)+'%'--12.3400%
select cast(cast(str(@a*100,5,2) as varchar)as varchar)+'%'--12.34%