求Transact SQL的字符串函数

淡蓝色2 2003-08-20 03:20:20
目的:把数字转换成尾部不带0的字符串.

Str和Convert函数转换后的字符串的尾部都有"0"
...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zezejun 2003-08-21
  • 打赏
  • 举报
回复
zjcxc,这样做的话,把小数点前面的零也去掉了!能否只去小数点后尾部的零?
pengdali 2003-08-21
  • 打赏
  • 举报
回复
select REVERSE(cast(REVERSE(23000) as int))
happy_0325 2003-08-21
  • 打赏
  • 举报
回复
create function f_num2str(@i decimal(20,4))
return varchar(20)
as
begin
declare @re varchar(20)
set @str=cast(102009800 as varchar)

while right(@str,1)='0'
set @str=left(@str,len(@str) - 1
return(@str)
end
go
lexin 2003-08-20
  • 打赏
  • 举报
回复
select replace(cast(1230 as varchar),'0','')
zjcxc 元老 2003-08-20
  • 打赏
  • 举报
回复
也可以将上面的处理语句写成函数:

create function f_num2str(@i decimal(20,4))
return varchar(20)
as
begin
declare @re varchar(20)
set @str=cast(102009800 as varchar)

if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
return(@str)
end
go

--调用函数
select dbo.f_num2str(100),dbo.f_num2str(108300),dbo.f_num2str(1918)
zjcxc 元老 2003-08-20
  • 打赏
  • 举报
回复
用类似下面的方法处理就行了:


declare @str varchar(20)
set @str=cast(102009800 as varchar)

if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
print @str
zjcxc 元老 2003-08-20
  • 打赏
  • 举报
回复
用类似下面的方法处理就行了:


declare @str varchar(20)
set @str=cast(102009800 as varchar)

if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
print @str
hjb111 2003-08-20
  • 打赏
  • 举报
回复
select replace(cast(1230 as varchar),'0','')
hjb111 2003-08-20
  • 打赏
  • 举报
回复
replace(left(cast(1240 as varchar),1),'')
CrazyFor 2003-08-20
  • 打赏
  • 举报
回复
自己写一个函数,把尾部的0删除掉.

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧