SQL Server乱码处理(ASCII)
CREATE FUNCTION [dbo].[RegexReplace]
(
@string VARCHAR(MAX), --被替换的字符串
@pattern VARCHAR(255), --替换模板
@replacestr VARCHAR(255), --替换后的字符串
@IgnoreCase INT = 0 --0区分大小写 1不区分大小写
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @objRegex INT, @retstr VARCHAR(8000)
--创建对象
EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT
--设置属性
EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase
EXEC sp_OASetProperty @objRegex, 'Global', 1
--执行
EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr
--释放
EXECUTE sp_OADestroy @objRegex
RETURN @retstr
END
----保证正常运行的话,需要将Ole Automation Procedures选项置为1
--EXEC sp_configure 'show advanced options', 1
--RECONFIGURE WITH OVERRIDE
--EXEC sp_configure 'Ole Automation Procedures', 1
--RECONFIGURE WITH OVERRIDE
--匹配字符串'\b字符串'
--匹配html/XMl'\<[^<>]*\>'
--匹配ASCII码'[\x01-\x3f]' 注意这里过滤了所有ASCII码的特殊符号包括?()等根据需求可以自己调节,
--SELECT ASCII(' ') 用于查找特殊符号的ASCII值
--SELECT CHAR(0x03) 用于显示特殊符号
GO
CREATE FUNCTION [dbo].[去除乱码] ( @str NVARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
RETURN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@str,
NCHAR(0x00), ''),
NCHAR(0x01), ''),
NCHAR(0x02), ''),
NCHAR(0x03), ''),
NCHAR(0x04), ''),
NCHAR(0x05), ''),
NCHAR(0x06), ''),
NCHAR(0x07), ''),
NCHAR(0x08), ''),
NCHAR(0x0b), ''),
NCHAR(0x0c), ''),
NCHAR(0x0e), ''),
NCHAR(0x0f), ''),
NCHAR(0x10), ''),
NCHAR(0x11), ''),
NCHAR(0x12), ''),
NCHAR(0x13), ''),
NCHAR(0x14), ''),
NCHAR(0x15), ''),
NCHAR(0x16), ''),
NCHAR(0x17), ''),
NCHAR(0x18), ''),
NCHAR(0x19), ''),
NCHAR(0x1A), ''),
NCHAR(0x1B), ''),
NCHAR(0x1C), ''),
NCHAR(0x1D), ''),
NCHAR(0x1E), ''),
NCHAR(0x1F), ''),
NCHAR(10), ''),
NCHAR(32), ''),
NCHAR(13), ''),
NCHAR(9), '');
END; GO
以上是二种去除数据中乱码的方式可以根据需求自己更改,第一中利用增则表达式的匹配区间并且需要开启额外功能(sp_OAcreate功能相当强大可以开启SQL server调用Web Service),第二种是针对个例的,下面是测试脚本
SELECT dbo.RegexReplace( '成都市武侯0H倎× (? 4普陀区甘泉街道甘泉路241弄25号302室 0','[\x01-\x20]','',0);
SELECT dbo.去除乱码( '成都市武侯0H倎× (? 4普陀区甘泉街道甘泉路241弄25号302室 0');
SELECT ASCII(' ')
SELECT CHAR(0x03)
另外,摘自网上的SQL Server基本的正则表达式用法例子
CREATE FUNCTION [dbo].[提取汉字] ( @S NVARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%', @S) > 0
SET @S = STUFF(@S, PATINDEX('%[^吖-座]%', @S), 1,
N'');
RETURN @S;
END; GO CREATE FUNCTION [dbo].[提取数字] ( @S VARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', @S) > 0
BEGIN
SET @S = STUFF(@S, PATINDEX('%[^0-9]%', @S),
1, '');
END;
RETURN @S;
END; GO GO
CREATE FUNCTION [dbo].[提取字母] ( @S VARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^a-z]%', @S) > 0
BEGIN
SET @S = STUFF(@S, PATINDEX('%[^a-z]%', @S),
1, '');
END;
RETURN @S;
END;
* 正则表达式符号^在SQL server中在[]外不是匹配第一个字符,这个与一般正则表达式有所区别,一般正则表达式^[0-9]意思是匹配第一个是0-9的数字,[^0-9]匹配不是0-9的数字
*SQL Server访问Web Service学习连接:https://www.cnblogs.com/davidhou/p/5868136.html
SQL Server乱码处理(ASCII)的更多相关文章
- python链接sql server 乱码问题
import pymssql import sys import os reload(sys) sys.setdefaultencoding('utf-8') os.environ['NLS_LANG ...
- SQL server函数大全
函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一种 ...
- SQL SERVER 函数大全[转]
SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...
- 【转载】SQL SERVER 函数大全
SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...
- SQL Server 函数大全
本文链接:https://blog.csdn.net/qq_15028299/article/details/81330854SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合.htt ...
- delphi 2010 导出sql server 数据到DBF乱码问题
近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发. 首先按要求在VFP里创建DBF表,字段数有240个 ...
- asp.net插入sql server 中文乱码问题解决方案
创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...
- 使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题
原文 使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题 最近帮客户写了一个.net商城网站的发布接口,大家都知道.net一般都使用MSSQL数据库,但鱼丸不会. ...
- phpstudy连接SQL Server 2008数据库 以及 php使用sql server出现乱码解决方式
开始也尝试自己配置php安装环境,找到一个详细的百度经验http://jingyan.baidu.com/article/154b46315242b328ca8f4101.html,前面有问题也一一去 ...
随机推荐
- 解决JAVA_HOME nor the JRE_HOME environment variable is defined
从别的地方复制了一个tomcat, 启动后一闪即退, 使用记事本打开 startup.bat文件, 在文件底部修改, 并追加如下内容 call "%EXECUTABLE%" run ...
- 参数传递中编码问题(Get/Post 方式)(二)
form有2中方法把数据提交给服务器,get 和post ,分别说下吧.(一)get 提交1.首先说下客户端(浏览器)的form表单用get 方法是如何将数据编码后提交给服务器端的吧. 对于get 方 ...
- js操作indexedDB增删改查示例
js操作indexedDB增删改查示例 if ('indexedDB' in window) { // 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本 var r ...
- babel-polyfill使用简介
babel-polyfill介绍 简介 使用这个插件你可随心所欲的使用es6甚至更高版本的方法,这个插件自动转码 安装 这个插件必须在你的源码运行之前运行,所以必须安装成dependency npm ...
- Python之select模块解析
首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...
- Eclipse使用总结——使用Eclipse打包带源码的jar包
平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...
- ffmpeg码率控制
一.VBR与CBR的含义和区别 VBR是动态码率.CBR是静态码率. VBR(Variable Bitrate)动态比特率.也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率, ...
- Spring Cloud Eureka 1(eureka简介)
Spring Cloud Eureka 是 Spring Cloud Netflix微服务套件中的一部分,基于netflix eureka做了二次封装,主要负责完成微服务架构中的服务治理功能. 服务治 ...
- bash shell笔记5 显示数据
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/521455 知 ...
- linux cp -r chmod -R 递归拷贝 删除 改权限
在linux下拷贝的时候有时候会出现cp:omitting directory的错误 ,例如 cp:omitting directory "bbs" 说明bbs目录下面还有目录,不 ...