用自定义函数替换SQL中的全角数字为半角数字

函数

在我们使用MSSQL的时候,有时表中有一些是全角的数字,但我们的系统不能够正确的使用它们,这时我们要把他们替换为半角数字。而SQL自己好像没有这个函数。

没有,我们自己动手:

下面就是我自己写的一个函数,当然,我的数据量小,没有考虑性能!

--  把全角数据转换成半角数字(注意,这个只能转换全是全角的,在第一个半角数据时返回)--  公司:石家庄创联科技--  编写:牛昆亮  QQ:273352165

create function  ufn_convertWideNumericToAnsi( @vstrIn varchar(1000))returns varchar(4000)asbegin declare @strReturn varchar(4000)  ,@bin  varbinary(4000)  ,@str  varchar(4000)  ,@stmp varchar(4)  ,@i   int  ,@len  int--  ,@vstrIn varchar(1000)

--set @vstrIn ='031851001845' set @strReturn='' set @bin=convert(varbinary(4000),@vstrIn) exec master..xp_varbintohexstr @bin, @str out  select @str=stuff(@str,1,2,'')  set @len=len(@str) set @i=1 while @i<@len begin set @stmp = substring(@str,@i,4) if(substring(@stmp,1,1) <> 'A')  return @vstrIn set @stmp = replace(@stmp,'A','') set @stmp = replace(@stmp,'B','')--print @stmp set @stmp = cast((convert(int,@stmp)-30) as varchar(1)) set @strReturn = @strReturn + @stmp  set @i=@i+4 end--print @strReturnreturn  @strReturnend

示例

select '031851001845' as ORG,  dbo.ufn_convertWideNumericToAnsi('031851001845') DES

ORG                      DES           ------------------------ ---------------------------031851001845             031851001845

时间: 2024-11-02 13:45:03

用自定义函数替换SQL中的全角数字为半角数字的相关文章

ASP.NET技巧:全角字符转换为半角

asp.net|技巧|转换 方法一:/**//// <summary>    /// 判断字符是否英文半角字符或标点    /// </summary>    /// <remarks>    /// 32    空格    /// 33-47    标点    /// 48-57    0~9    /// 58-64    标点    /// 65-90    A~Z    /// 91-96    标点    /// 97-122    a~z    /// 12

java全角字符转换为半角 半角转全角

/// <summary> /// 判断字符是否英文半角字符或标点 /// </summary> /// <remarks> /// 32 空格 /// 33-47 标点 /// 48-57 0~9 /// 58-64 标点 /// 65-90 A~Z /// 91-96 标点 /// 97-122 a~z /// 123-126 标点 /// </remarks> public static bool IsBjChar(char c) { int i =

malloc 库函数 替换-如何用自定义的替换库中函数?

问题描述 如何用自定义的替换库中函数? 我们单位是64位开发平台,自己定义一套内存管理机制,如果用自定义的内存申请函数,如aaa_malloc,所申请的空间在所有进程中的物理地址和虚拟地址都是一样的. 现在要移植一个开源软件,这个软件会在多核设备上运行,但会读写同一个数据结构,这个数据结构相当复杂,多个进程可能都会写,所以现在有个需求是要用自己写的申请函数aaa_malloc代替代码中所有malloc,怎么做才是最方便的? 原来想找到stdlib.h,直接重定义里面的malloc声明,或把自己写

PHP自定义函数获取URL中一级域名的方法_php技巧

本文实例讲述了PHP自定义函数获取URL中一级域名的方法.分享给大家供大家参考,具体如下: <?php /* * Created on 2016-8-23 */ function regular_domain($domain) { if (substr ( $domain, 0, 7 ) == 'http://') { $domain = substr ( $domain, 7 ); } if (strpos ( $domain, '/' ) !== false) { $domain = sub

100分,.net 中如何实现遍历excel中所有sheet,把全角转成半角?

问题描述 100分,.net中如何实现遍历excel中所有sheet,把全角转成半角? 解决方案 解决方案二:操作excel的一些函数,你也许用的到ImportsSystemImportsSystem.DataImportsSystem.ConfigurationImportsSystem.WebNamespaceExcelEditPublicClassExcelEditPublicmFilenameAsStringPublicappAsExcel.ApplicationPublicwbsAsE

android开发-Android中关于全角和半角转换并且做输入限制的类

问题描述 Android中关于全角和半角转换并且做输入限制的类 在开发一个项目中,需要对昵称和签名做输入限制,而且是限制全角的方式,怎么实现 解决方案 全角字符占用2个字符位置,半角字符占用1个字符位置. 做长度测试 不知道行不 你试试

php全角字符转换为半角函数_php技巧

之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题.最后还是换成下面的字符替换方式了,把目前能找到的所有全角都列出来了一个个替换吧 复制代码 代码如下: /** * 全角字符转换为半角 * * @param string $str * @return string */ public function Sbc2Dbc($str) { $arr = array( '0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3', '4'=>'4',

正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度_javascript技巧

判断是否存在中文和全角字符 str.match(/[^\x00-\xff]/ig) 判断包含中文字符串长度 aMatch=str.match(/[^\x00-\x80]/g); str.length+(!aMatch?0:aMatch.length) javascript 判断中文字符长度 一种: 复制代码 代码如下: function _length(str){ var len=0; for(var i=0;i<str.length;i++){ if(str.charAt(i)>'~'){l

PHP实现全角字符转为半角方法汇总_php技巧

最简单的方法 <?php $str = "0123ABCDFWS\",.?<>{}[]*&^%#@!-()+-|::"; echo "$str"; echo "<br />"; $str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str); echo $str; 这是网上看来的代码,所有的中文标点的第二个字节减去0X80(即128