Sql Server如何Trim掉指定的字符,如'0'

山的那边还是山~ 2008-10-22 01:11:24
RT
...全文
2881 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanzisoftware 2012-01-23
  • 打赏
  • 举报
回复
#18楼 这种做法有点意思。
hake303 2010-02-26
  • 打赏
  • 举报
回复
先将0转空格,再去掉右边空格,再将里面的空格转0,如下:
replace(rtrim(replace('10500000','0',' ')),' ','0')
得到的结果就是105了
smilef9453 2009-08-21
  • 打赏
  • 举报
回复
7楼的档案是正解,楼主要自己学会分析,不要照搬代码。
sql2005函数代码如下:
USE [jjXinHe]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[trimChar]
(
@char VARCHAR(5),
@str nVARCHAR(max)
)
RETURNS nvarchar(max)
AS
BEGIN
if(len(@str)=0) RETURN @str;


RETURN(SELECT STUFF
(REVERSE(
STUFF(REVERSE(@str),1,
PATINDEX('%[^'+@char+']%',REVERSE(@str))-1,'')
)
,1,PATINDEX('%[^'+@char+']%',@str)-1,'')

);

END
zperson 2008-10-22
  • 打赏
  • 举报
回复
replace(@str,'0','')
  • 打赏
  • 举报
回复
谢谢,谢谢!
rockyvan 2008-10-22
  • 打赏
  • 举报
回复
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @BB NVARCHAR(20)
SET @BB = '4501000'

DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@BB)
SET @CC = @BB

WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END

SELECT @CC
/*
--------------------
4501

(1 個資料列受到影響)*/
rockyvan 2008-10-22
  • 打赏
  • 举报
回复
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @AA NVARCHAR(20)
SET @AA = '45002500'

DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@AA)
SET @CC = @AA

WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END

SELECT @CC
/*
--------------------
450025

(1 個資料列受到影響)*/

rockyvan 2008-10-22
  • 打赏
  • 举报
回复
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @AA NVARCHAR(20),@BB NVARCHAR(20)
SET @AA = '45002500'
SET @BB = '4501000'

DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@AA)
SET @CC = @AA
--SET @i = LEN(@BB)
--SET @CC = @BB

WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END

PRINT @CC
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 rockyvan 的回复:]
引用 5 楼 cftxlin 的回复:
用replace不行的,这样的话,把其他地方的'0',也给去掉了。需要的是把未尾 的'0'去掉。

建议给点测试数据,免得大家猜来猜去。
[/Quote]

比如,'45002500','4501000'

现在要求不要最后的'0',而且这个'0'的个数是不确定的在一个到三个之间。
rockyvan 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cftxlin 的回复:]
用replace不行的,这样的话,把其他地方的'0',也给去掉了。需要的是把未尾 的'0'去掉。
[/Quote]
建议给点测试数据,免得大家猜来猜去。
liangCK 2008-10-22
  • 打赏
  • 举报
回复
sorry..7楼那个不行.
幸运的意外 2008-10-22
  • 打赏
  • 举报
回复
对不起,忘了一个参数
用replace函数吧,格式如下:
replace(检索字符串,替换原字符,目标字符)
例:replace('0 haohaoxuexi','0 ','') 结果为'haohaoxuexi'
liangCK 2008-10-22
  • 打赏
  • 举报
回复
CREATE FUNCTION dbo.trimChar(@char VARCHAR(5),@str VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
RETURN(SELECT STUFF
(REVERSE(
STUFF(REVERSE(@str),1,
PATINDEX('%[^'+@char+']%',REVERSE(@str))-1,'')
)
,1,PATINDEX('%[^'+@char+']%',@str)-1,'')

);
END
GO

DECLARE
@str VARCHAR(20);

SET @str='0012agd02002d400';

SELECT dbo.trimChar('0',@str);

DROP FUNCTION dbo.trimChar



/*
--------------------------------------------------
12agd02002d4

(1 行受影响)

*/
幸运的意外 2008-10-22
  • 打赏
  • 举报
回复
用replace函数吧,格式如下:
replace(检索字符串,替换字符)
例:replace('0 haohaoxuexi','0 ') 结果为'haohaoxuexi'
  • 打赏
  • 举报
回复
用replace不行的,这样的话,把其他地方的'0',也给去掉了。需要的是把未尾 的'0'去掉。
fcuandy 2008-10-22
  • 打赏
  • 举报
回复
replace
水族杰纶 2008-10-22
  • 打赏
  • 举报
回复
replace(col,'0','')
林虎 2008-10-22
  • 打赏
  • 举报
回复
replace
-狙击手- 2008-10-22
  • 打赏
  • 举报
回复
replace(@s,'0','')
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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