SQL SERVER 全角和半角的解决方法
2010-05-12 03:34
267 查看
SQL SERVER 全角和半角的解决方法
[align=right]from :http://kangbin.javaeye.com/blog/368574[/align] 今天在开发项目当中遇到了一个非常郁闷的问题,导致我的更新总是屡屡失败,数字全角半角的问题update corptax
set corptax.mandep = c.SALECOMPANY
from corptax t,collection c
where t.INVOICECODE = c.invoicecode and cast(t.invoiceno as int(8)) between c.BEGINCODE and c.ENDCODE
corptax 表中的 invoiceno 是一个varchar(50)的,其实实际上这个字段保存的是(0-9)8位数字,用别人的表只能自己解决了,invoiceno在数据库中的错误记录如 下:
00412051
02155331
等等……
解决方法,自定一个用户函数:去替换掉里面的全角字符
CREATE FUNCTION shasha (@fphm varchar(50))
RETURNS varchar(8)
AS
BEGIN
SET @fphm = replace(@fphm,' ','');
SET @fphm = replace(@fphm,'0','0');
SET @fphm = replace(@fphm,'1','1');
SET @fphm = replace(@fphm,'2','2');
SET @fphm = replace(@fphm,'3','3');
SET @fphm = replace(@fphm,'4','4');
SET @fphm = replace(@fphm,'5','5');
SET @fphm = replace(@fphm,'6','6');
SET @fphm = replace(@fphm,'7','7');
SET @fphm = replace(@fphm,'8','8');
SET @fphm = replace(@fphm,'9','9');
RETURN(@fphm)
END
之后用sql 语句更新就可以了
update corptax set invoiceno = dbo.shasha(invoiceno) where ASCII(SUBSTRING(invoiceno,1,1))>57
where 后面条件的意思是如果取到的第一个数字的ascii不在(0-9)之内,0的ascii码为48, 9的ascii为57.全角的ascii码大于半角的ascii码,这样所有全角的记录就被更新成半角了。
希望我们每个人都能用心去解决自己遇到的问题。
相关文章推荐
- RichTextBox 全角引号变成半角解决方法
- 文本框限制输入(半角,全角互转),以及控制输入法问题,解决方法整合
- .NET程序半角变全角解决方法.(.NET2003 .NET2005)
- 文本框限制输入(半角,全角互转),以及控制输入法问题,解决方法整合
- 【转】SQL Server 2005 不允许远程连接解决方法
- 安装SQL Server 2008后,再安装Visual Studio 2008无法选择安装路径的解决方法
- SQL Server 2005出现的游标错误的解决方法
- SQL Server Alwayson添加监听器失败的解决方法
- SQL SERVER 2005 数据库状态为“可疑”的解决方法
- SQL Server 导出Excel有换行的解决方法
- SQL Server 2008 允许远程链接 解决方法
- SQL SERVER 2008无法删除作业的解决方法
- SQL Server 2005 无法添加维护计划的解决方法
- SQL SERVER 2000 9003错误的解决方法(只适用于SQL2000)
- SQL Server导入导出数据时最常见的一个错误解决方法
- SQL server 2000 安装失败解决方法
- 将全角字符转换成半角的js方法
- SQL Server 允许远程连接的解决方法
- ASP.NET配置(web.config)无法连接到SQL Server 数据库的解决方法
- 谈谈c#中 全角 半角 汉字 大小写字母的宽度 及中英文混合字符串对齐的方法