❶ sql怎么格式化取指定小数位数
控制小数显示位数的办法如下:
decimal(18,0)18是定点精度,0是小数位数。decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。
实例:
decimal[ (p[ ,s] )] 和 numeric[ (p[ ,s] )]
固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 ISO 同义词为 dec 和 dec(p, s),numeric 在功能上等价于 decimal。
p(精度)
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。
该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。
s (小数位数)
小数点右边可以存储的十进制数字的最大位数,小数位数必须是从 0 到 p 之间的值。
仅在指定精度后才可以指定小数位数,默认的小数位数为 0;
因此,0 <= s <= p。最大存储大小基于精度而变化。
❷ 请问:SQL中格式化显示数据用的是哪个函数
SELECT CONVERT(DECIMAL(18,2),金额) FROM 销售单;
你试一下这个应该可以
CONVERT函数是转换函数,CONVERT(DECIMAL(18,2),金额)意思是转换成小数类型(小数点后保持两位)。
❸ 【SQL】金额如果存在数据库中应该使用何种类型
一般用money或decimal或numeric,而不用float或double,因为容易出现"失真".
money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。
在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。
❹ sql 如何格式化输出这个数字
SELECT SUBSTRING(CONVERT(char, 320.01), 1, 1) + '"' + SUBSTRING(CONVERT(char, 320.01), 2, 2)
same result.
❺ 关于数字金额转换大写金额,sql语句
ALTER FUNCTION [dbo].[fn_NumberToChinese]( @s_money varchar(50)) /*数值类型*/
RETURNS VARCHAR(80) AS
BEGIN /*FUN*/
DECLARE @c_money VARCHAR(12) /* s_money */
DECLARE @m_string VARCHAR(22) /* 分角圆拾佰仟万拾佰仟亿 */
DECLARE @n_string VARCHAR(20) /* 壹贰叁肆伍陆柒捌玖 */
DECLARE @len int /* 金额字符串的长度 */
DECLARE @is_zero bit /* 判断是否为0, 1-true 0-false */
DECLARE @i int /* 循环变 */
DECLARE @n char /* 金额内各个位的数值 */
DECLARE @tmp decimal
DECLARE @b_string VARCHAR(80)
DECLARE @z_count VARCHAR(80)
set @b_string = ''
select @m_string = '分角圆拾佰仟万拾佰仟亿拾佰仟万'
select @n_string = '壹贰叁肆伍陆柒捌玖'
select @tmp = ROUND(cast(@s_money as decimal(20,3)),1) * 100 /* 去小数点 */
select @c_money = RTRIM(LTRIM(cast(@tmp as varchar(12)))) /* 去除首尾空格 */
select @len = len(@c_money) /* 获取长度 */
IF (@len > 11)
begin
select @b_string = '超出范围'
RETURN @b_string
end
select @is_zero = 1
select @z_count = 0
select @i = 0
WHILE @i < @len
begin /* while */
select @i = @i + 1
select @n = substring(@c_money,@i,1) /* 逐个去出数字 */
IF (@n = '0')
begin
/*if no.1*/
IF (@len-@i=6 OR @len-@i=2 OR @len=@i)
begin/* if no.2 */
IF (@is_zero = 1)
begin/* if no.3 */
select @b_string = substring(@b_string,1,len(@b_string)-1)
select @is_zero = 0
end/* if no.3 */
IF (@len-@i=6)
begin
select @b_string = @b_string + '万'
end
IF @len-@i=2
begin
select @b_string = @b_string + '圆'
end
IF @len = @i
begin
select @b_string = @b_string + '整'
end
select @z_count = 0
end/* if no.2 */
ELSE
begin/* if no.2 */
IF @z_count = 0
begin
select @b_string = @b_string + '零'
select @is_zero = 1
END
select @z_count = @z_count + 1
end/* if no.2 */
end/*if no.1*/
ELSE
begin/*if no.1*/
select @b_string = @b_string + substring(@n_string,cast(@n as int),1) + substring(@m_string,@len-@i+1,1)
select @z_count = 0
select @is_zero = 0
end/*if no.1*/
END /* while */
RETURN @b_string
END /*FUN*/
❻ 在SQL数据库中,设置了一个字段的类型为money,但是money类型数据保留的是四位小数,如何设置为两位小数
1、直接型,通过ToString()函数直接格式化。
例如把money = 12345.67 格式成 money = 12,345.67。代码如下:
string_money=moeny.ToString("N")或者string_moeny=money.ToString("#,###.00")
2、本地化型,通过CultureInfo类,根据指定的文化进行格式化,同样的,代码如下:
doublemoney=12345.67;
CultrueInfoci=newCultrueInfo("zh-CH");
string_money=money.ToString("c",ci)。
❼ SQL数值格式化
这个应该是程序时显示的吧,是不是用了JAVASQL默认情况下会帮忽略后面那一串0的
❽ 用SQL编一个把数字的钱(如100.50)转化成大写的钱(如壹佰圆零五角整)的程序
创建一个存储过程就行了
CREATE PROCEDURE dbo.L2U
(
@n_LowerMoney numeric(15,2),
@v_TransType int,
@RET VARCHAR(200) output
)
AS
Declare @v_LowerStr VARCHAR(200) -- 小写金额
Declare @v_UpperPart VARCHAR(200)
Declare @v_UpperStr VARCHAR(200) -- 大写金额
Declare @i_I int
set nocount on
select @v_LowerStr = LTRIM(RTRIM(STR(@n_LowerMoney,20,2))) --四舍五入为指定的精度并删除数据左右空格
select @i_I = 1
select @v_UpperStr = ''
while ( @i_I <= len(@v_LowerStr))
begin
select @v_UpperPart = case substring(@v_LowerStr,len(@v_LowerStr) - @i_I + 1,1)
WHEN '.' THEN '元'
WHEN '0' THEN '零'
WHEN '1' THEN '壹'
WHEN '2' THEN '贰'
WHEN '3' THEN '叁'
WHEN '4' THEN '肆'
WHEN '5' THEN '伍'
WHEN '6' THEN '陆'
WHEN '7' THEN '柒'
WHEN '8' THEN '捌'
WHEN '9' THEN '玖'
END
+
case @i_I
WHEN 1 THEN '分'
WHEN 2 THEN '角'
WHEN 3 THEN ''
WHEN 4 THEN ''
WHEN 5 THEN '拾'
WHEN 6 THEN '佰'
WHEN 7 THEN '仟'
WHEN 8 THEN '万'
WHEN 9 THEN '拾'
WHEN 10 THEN '佰'
WHEN 11 THEN '仟'
WHEN 12 THEN '亿'
WHEN 13 THEN '拾'
WHEN 14 THEN '佰'
WHEN 15 THEN '仟'
WHEN 16 THEN '万'
ELSE ''
END
select @v_UpperStr = @v_UpperPart + @v_UpperStr
select @i_I = @i_I + 1
end
--------print '//v_UpperStr ='+@v_UpperStr +'//'
if ( @v_TransType=0 )
begin
select @v_UpperStr = REPLACE(@v_UpperStr,'零拾','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零佰','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零仟','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零零零','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','整')
select @v_UpperStr = REPLACE(@v_UpperStr,'零分','整')
select @v_UpperStr = REPLACE(@v_UpperStr,'零角','零')
select @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')
select @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')
select @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')
select @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')
select @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')
select @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')
select @v_UpperStr = REPLACE(@v_UpperStr,'零万','万')
select @v_UpperStr = REPLACE(@v_UpperStr,'零元','元')
select @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')
end
-- 对壹元以下的金额的处理
if ( substring(@v_UpperStr,1,1)='元' )
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)= '零')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)='角')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if ( substring(@v_UpperStr,1,1)='分')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)='整')
begin
select @v_UpperStr = '零元整'
end
select @ret=@v_UpperStr
GO
使用时调用这个存储过程
declare @ret varchar(200)
exec L2U 567983.897,1,@ret output
select @ret
❾ sqlyog如何格式化SQL语句,如同plsql里的一样
1、首先打开sqlyog桌面的sqlyog客户端软件。