在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号)
2024-08-26 22:49:38
原文:在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号)
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
去掉一个字段中的标点符号的SQL语句怎么写
http://bbs.csdn.net/topics/390621077?page=1#post-395850514
比如有一个字段 题名
1 水尼“十万”个为什么
2 当代工人:市场化的演变与趋势
3 当代画家 (东北卷)
想把这个字段中的标点符号去掉,请教各位大侠SQL 语句该怎么写。
我的解法是,通过新建一个符号表,里面存储要替换的各种符号,然后通过循环,把这些符号替换了,
如果数据多了,应该效率不太好:
-
if object_id('t') is not null
-
drop table t
-
go
-
-
create table t(id int,title nvarchar(100))
-
-
insert into t
-
select 1,'水尼“十万”个为什么' union all
-
select 2,'当代工人:市场化的演变与趋势' union all
-
select 3,'当代画家(东北卷)' union all
-
select 4,'当代画家:“北京篇:;”'
-
-
-
if object_id('symbol') is not null
-
drop table symbol
-
go
-
-
--建立一个标点符号的表,你可以往里面加各种你想替换的标点符号
-
create table symbol (n nvarchar(10));
-
-
insert into symbol
-
select '“' union all
-
select '”' union all
-
select ':' union all
-
select ';'
-
-
go
-
-
-
if exists(select * from sys.objects where name = 'fn_replace_symbol')
-
drop function dbo.fn_replace_symbol;
-
go
-
-
create function dbo.fn_replace_symbol(@n nvarchar(1000))
-
returns nvarchar(1000)
-
as
-
begin
-
declare @i int;
-
declare @count int;
-
-
set @i = 1
-
set @count = (select count(*) from symbol);
-
-
while @i <= @count
-
begin
-
;with t
-
as
-
(
-
select n,
-
row_number() over(order by @@servername) as rownum
-
from symbol
-
)
-
-
select @n = replace(@n,(select n from t where rownum = @i),'')
-
set @i = @i + 1
-
end
-
-
return @n
-
end
-
go
-
-
--替换效果
-
select * ,
-
dbo.fn_replace_symbol(title) as 替换完后的字符
-
from t
-
/*
-
id title 替换完后的字符
-
1 水尼“十万”个为什么 水尼十万个为什么
-
2 当代工人:市场化的演变与趋势 当代工人市场化的演变与趋势
-
3 当代画家(东北卷) 当代画家(东北卷)
-
4 当代画家:“北京篇:;” 当代画家北京篇
-
*/
最新文章
- 无索引状态下比较DataTable的几种过滤方法效率
- android开发中获取<;meta-data>;数据
- centos7编译安装pure-ftpd-1.0.42
- Leetcode 1 Two Sum STL
- Sharepoint 2013 列表使用JS Link
- fuelSources
- The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures
- poj 2553 强连通
- Oracle误删数据文件后出现oracle initialization or shutdown in progress解决
- [Swift]LeetCode783. 二叉搜索树结点最小距离 | Minimum Distance Between BST Nodes
- 构建高性能服务 Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue
- Redis集群(主从模式)
- week7
- Android项目实战(三十三):AS下获取获取依赖三方的jar文件、aar 转 jar
- thread run 和 start 的区别
- luogu2865 路障 (dijkstra)
- react中跨域请求天气预报接口数据
- tensorflow入门笔记(四) tf.summary 模块
- 【托业】【新东方全真模拟】01~02-----P5~6
- SQL语句 查询同一个字符在某一个字符串中出现的次数
热门文章
- cv2.warpAffine 参数详解
- fingerprint for the ECDSA key
- Java Web J2EE下的两大框架SSH和SSM对比
- phpstorm yii2框架的redis和mongodb提示
- 【Java】Spring之控制反转(IoC)(二)
- VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
- PP篇7 生产替代料齐套后处理
- Sound (audio file) player in java - working source code example
- 知识点-Spark小节
- Echart timeline 高级用法!!!!