❶ 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客戶端軟體。