原文:在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号)

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。

去掉一个字段中的标点符号的SQL语句怎么写

http://bbs.csdn.net/topics/390621077?page=1#post-395850514

比如有一个字段    题名

         1       水尼“十万”个为什么

         2      当代工人:市场化的演变与趋势

         3      当代画家  (东北卷)

想把这个字段中的标点符号去掉,请教各位大侠SQL 语句该怎么写。

我的解法是,通过新建一个符号表,里面存储要替换的各种符号,然后通过循环,把这些符号替换了,

如果数据多了,应该效率不太好:


  1. if object_id('t') is not null
  2. drop table t
  3. go
  4. create table t(id int,title nvarchar(100))
  5. insert into t
  6. select 1,'水尼“十万”个为什么' union all
  7. select 2,'当代工人:市场化的演变与趋势' union all
  8. select 3,'当代画家(东北卷)' union all
  9. select 4,'当代画家:“北京篇:;”'
  10. if object_id('symbol') is not null
  11. drop table symbol
  12. go
  13. --建立一个标点符号的表,你可以往里面加各种你想替换的标点符号
  14. create table symbol (n nvarchar(10));
  15. insert into symbol
  16. select '“' union all
  17. select '”' union all
  18. select ':' union all
  19. select ';'
  20. go
  21. if exists(select * from sys.objects where name = 'fn_replace_symbol')
  22. drop function dbo.fn_replace_symbol;
  23. go
  24. create function dbo.fn_replace_symbol(@n nvarchar(1000))
  25. returns nvarchar(1000)
  26. as
  27. begin
  28. declare @i int;
  29. declare @count int;
  30. set @i = 1
  31. set @count = (select count(*) from symbol);
  32. while @i <= @count
  33. begin
  34. ;with t
  35. as
  36. (
  37. select n,
  38. row_number() over(order by @@servername) as rownum
  39. from symbol
  40. )
  41. select @n = replace(@n,(select n from t where rownum = @i),'')
  42. set @i = @i + 1
  43. end
  44. return @n
  45. end
  46. go
  47. --替换效果
  48. select * ,
  49. dbo.fn_replace_symbol(title) as 替换完后的字符
  50. from t
  51. /*
  52. id title 替换完后的字符
  53. 1 水尼“十万”个为什么 水尼十万个为什么
  54. 2 当代工人:市场化的演变与趋势 当代工人市场化的演变与趋势
  55. 3 当代画家(东北卷) 当代画家(东北卷)
  56. 4 当代画家:“北京篇:;” 当代画家北京篇
  57. */

在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号)的更多相关文章

  1. 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)

    原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  2. 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)

    原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...

  3. 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)

    原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...

  4. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  5. 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)

    原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  6. 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)

    原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  7. 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)

    原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...

  8. 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)

    原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...

  9. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

随机推荐

  1. 解决request.getSession().getServletContext().getRealPath("/")为null问题

    今天把程序部署到服务器,发现异常,FileNotFound异常,很快定位到getServletContext().getRealPath("/");返回空的问题.这个问题通常是传递 ...

  2. 贪心:leetcode 870. Advantage Shuffle、134. Gas Station、452. Minimum Number of Arrows to Burst Balloons、316. Remove Duplicate Letters

    870. Advantage Shuffle 思路:A数组的最大值大于B的最大值,就拿这个A跟B比较:如果不大于,就拿最小值跟B比较 A可以改变顺序,但B的顺序不能改变,只能通过容器来获得由大到小的顺 ...

  3. Qt编写气体安全管理系统11-数据打印

    一.前言 在各种软件系统中,数据打印也是常用的功能之一,一般来说会对查询的数据结果导出到excel,还会对查询的数据结果直接打印,在Qt中提供了打印机类QPrinter,在printsupport组件 ...

  4. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  5. attribute__关键字举例之visibility

    /** @file visibilityT.c * @note * @brief * @author * @date 2019-6-20 * @note v1.0.0 Created * @histo ...

  6. jenkins升级完后一直显示升级中

    这个时候是已经升级成功了的,刷新界面,从新登录即可

  7. vi 替换命令 以及“找不到模式”解决

    转自:https://www.cnblogs.com/zfyouxi/p/5181363.html 在linux vi编辑工具中使用替换命令操作时,会出现明明有匹配查找模式的数据.却报“找不到模式”问 ...

  8. SpringMVC:学习笔记(12)——ThreadLocal实现会话共享

    SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量 ...

  9. CentOS 7 新装服务器部署流程

    目录 1.设置时区 2.配置内网IP (如果是外网IP,linux要修改远程端口) 3.配置自己的yum源 4.关闭SELinux 5.添加zabbix监控 6.关闭防火墙和NM 7.安装软件包 8. ...

  10. k8s中configmap的使用方法

      ConfigMaps允许您将配置构件与映像内容解耦,以保持容器化应用程序的可移植性.本文展示如何创建configmap,修改configmap以及如何把configmap应用于pod. 创建con ...