这个去除空格的存储过程应该怎么写?

学海无涯-回头是岸 2016-11-16 09:33:38
我这个用全动态sql才能解决表结构不固定,但是又不能用几条update语句更新,怎么解决这个?
...全文
208 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-11-16
  • 打赏
  • 举报
回复
char(13)+char(10)--这是编译器输入时回车产生的2个字节 比如:你在查询分析器里输入回车,查看字节是以上两个字节,你可直接替换,不需要再去分开替换,只需替换1次 根据自己的真实数据而定
  • 打赏
  • 举报
回复
引用 8 楼 roy_88 的回复:
语句可改为 e.g.
CREATE PROCEDURE QKG
    @KK VARCHAR(20) ,
    @LL VARCHAR(20)
AS
    DECLARE @SQL1 NVARCHAR(2000);
    SET @SQL1 = 'UPDATE ' + @KK + ' SET ' + @LL + ' = LTRIM(RTRIM(REPLACE(REPLACE(REPLACE('+@LL+',CHAR(13)+CHAR(10),''''),CHAR(13),''''),CHAR(10),'''')))';

    EXEC sp_executesql @SQL1;
GO

EXEC QKG 查封0905$, 业务件号;
为什么先是 REPLACE('+@LL+',CHAR(13)+CHAR(10),'''') 然后再分别char(13)和CHAR(10)的呢?
  • 打赏
  • 举报
回复
引用 9 楼 roy_88 的回复:
如果字符 中间存在空格要去掉时 不要用ltrim/rtrim改为replace(字段,char(32),'')
谢谢
中国风 2016-11-16
  • 打赏
  • 举报
回复
如果字符 中间存在空格要去掉时 不要用ltrim/rtrim改为replace(字段,char(32),'')
中国风 2016-11-16
  • 打赏
  • 举报
回复
语句可改为 e.g.
CREATE PROCEDURE QKG
    @KK VARCHAR(20) ,
    @LL VARCHAR(20)
AS
    DECLARE @SQL1 NVARCHAR(2000);
    SET @SQL1 = 'UPDATE ' + @KK + ' SET ' + @LL + ' = LTRIM(RTRIM(REPLACE(REPLACE(REPLACE('+@LL+',CHAR(13)+CHAR(10),''''),CHAR(13),''''),CHAR(10),'''')))';

    EXEC sp_executesql @SQL1;
GO

EXEC QKG 查封0905$, 业务件号;
  • 打赏
  • 举报
回复
引用 6 楼 ch21st 的回复:
你是想去掉指定表,指定列中的回撤换行和前后空格吧

DECLARE @kK VARCHAR(100)='Test_Table',@LL VARCHAR(1000)='TestName'
DECLARE @sql NVARCHAR(max)
SET @sql='UPDATE [' +@kK +'] SET ['+@LL +']=RTRIM(LTRIM(REPLACE(REPLACE(['+@LL+'],CHAR(13),''''),CHAR(10),'''')))'
PRINT @sql
EXEC sys.sp_executesql @sql
谢谢
道素 2016-11-16
  • 打赏
  • 举报
回复
你是想去掉指定表,指定列中的回撤换行和前后空格吧

DECLARE @kK VARCHAR(100)='Test_Table',@LL VARCHAR(1000)='TestName'
DECLARE @sql NVARCHAR(max)
SET @sql='UPDATE [' +@kK +'] SET ['+@LL +']=RTRIM(LTRIM(REPLACE(REPLACE(['+@LL+'],CHAR(13),''''),CHAR(10),'''')))'
PRINT @sql
EXEC sys.sp_executesql @sql
  • 打赏
  • 举报
回复
CREATE PROCEDURE QKG @KK VARCHAR(20), @LL VARCHAR(20) AS DECLARE @SQL1 NVARCHAR(2000) SET @SQL1 ='UPDATE ' + @KK +' SET ' + @LL + ' = REPLACE(' + @LL + ',char(13),''''),' + @LL + ' = REPLACE(' + @LL + ',char(10),''''), ' + @LL + ' =RTRIM(' + @LL + '),' + @LL + ' =LTRIM(' + @LL + ')' EXEC sp_executesql @SQL1 GO EXEC QKG 查封0905$,业务件号 报错:在 SET 子句中多次指定了列名 '业务件号'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 '业务件号' 可能会在该视图定义中出现两次。
中国风 2016-11-16
  • 打赏
  • 举报
回复
在 SET位置 ------------- 提问 要懂方法,贴图时要+COPY语句,大家好直接给你改,只贴画没人乐意花时间给你,照图敲语句浪费热心帮助者时间
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
字符串的引号要输入两次 --4个单引号 ‘’‘’
是那个地方也有错,但是 它报错的意思是 update 后面的是一个字段 set 多次出错
中国风 2016-11-16
  • 打赏
  • 举报
回复
字符串的引号要输入两次 --4个单引号 ‘’‘’
中国风 2016-11-16
  • 打赏
  • 举报
回复
空格 CHAR(32) CHAR(13)--回车 CHAR(10)--换行 CHAR(9)--制表
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小技巧分享 新冠病例活动轨迹地图标识 

34,587

社区成员

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

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