打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
全角/半角转换 函数
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_convert]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_convert]
GO

/*--全角/半角转换

转换说明
全角字符从的unicode编码从65281~65374
半角字符从的unicode编码从   33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序
(此函数部分思路参考了CSDN上大力的转换函数)
--邹建 2005.01(引用请保留此信息)--*/

/*--调用示例

declare @s1 varchar(8000)
select @s1='中 2-3456a78STUVabn中国opwxyz'
select dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)
--*/
create function f_convert(
@str nvarchar(4000), --要转换的字符串
@flag bit            --转换标志,0转换成半角,1转换成全角
)returns nvarchar(4000)
as
begin
declare @pat nvarchar(8),@step int,@i int,@spc int
if @flag=0
select @pat=N'%[!-~ ]%',@step=-65248
else
select @pat=N'%[!-~ ]%',@step=65248
set @i=patindex(@pat COLLATE Latin1_General_BIN,@str)
while @i>0
select @str=stuff(@str,@i,1,nchar(case unicode(substring(@str,@i,1))
when 32 then 12288
when 12288 then 32
else unicode(substring(@str,@i,1))+@step end))
,@i=patindex(@pat COLLATE Latin1_General_BIN,@str)
return(@str)
end
go
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
全角半角转换函数
SQL Server 2005 数据繁简转换
数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
谈谈SQL数据库中滥用临时表、排序的解决方案优化(举例:汉字转拼音函数)
二次函数中的二倍角、半角问题总结
JavaScript 全角半角转换问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服