博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver将unicode,天格式转成成字符
阅读量:4162 次
发布时间:2019-05-26

本文共 1093 字,大约阅读时间需要 3 分钟。

嗯,历史遗留问题,在网站编码未统一之前,部分数据中,字符的格式不是标准的unicode字符,而是类似天这样的符号定义,但这种定义,我们显示在网站里没什么问题,但用来检索、统计等时候,就会出现问题了,所以我们需要把他转成标准的unicode字符

在sqlserver里,我们可以直接将数字转成字符,例如 char(32)就是空格,而超过8位长度的字符,我们需要用nchar来转换,比如nchar(22825)就是汉字“天”

那么就很简单了,我们只需要在正文中检索所有符合&#数字;这种格式的定义,然后转成unicode字符即可

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER FUNCTION [dbo].[UniCodeToNChar] (	@str nvarchar(max))RETURNS nvarchar(max)ASBEGIN	DECLARE @result nvarchar(max),@unicode varchar(10),@c nvarchar(10)	set @result = @str	declare cur cursor local for 	select distinct match,nchar(convert(int,master.dbo.regexmatch(match,'\d+'))) as c from master.dbo.RegexMatches(@str,'&#\d+;')	open cur	fetch next from cur into @unicode,@c	while @@fetch_status=0		begin			set @result = replace(@result,@unicode,@c)			fetch next from cur into @unicode,@c		end	close cur	deallocate cur	RETURN @resultEND

在这个函数里,我使用了以前我所定义的一个clr函数,正则相关的内容,用来筛选字符格式

有兴趣的可以参考这个文章,来自己实现

或者下载我的资源“”直接运行里边的指令,自动创建相关函数

嗯,因为我是自己配置的数据库,具有master操作权限,所以我把程序集和函数扔到master里了,可自行调整函数所在数据库

然后就是unicode转换函数的调用了,这个就没什么说的了

select master.dbo.UniCodeToNChar('测试天津市东丽区教育局机关,以及天津市教委')

 

转载地址:http://wavxi.baihongyu.com/

你可能感兴趣的文章
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC和Struts2的比较
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Build GingerBread on 32 bit machine.
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
Openwrt源码下载与编译
查看>>
rootkit related
查看>>
go语言如何从终端逐行读取数据?------用bufio包
查看>>
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
队列和栈的本质区别
查看>>