sql 全角半角的转换

 
create table MyGroups(SN int, UserName varchar(10), Groups varchar(10))
insert MyGroups select 109,            '?
',                 ' ?'
union all select 110,            '
李四 ',                 ' ?'
union all select 110,            '
李四 ',                 ' ?'
union all select 110,            '
李四 ',                 ' ?'
union all select 331,            '
王五 ',                 ' ?'
union all select 331,            '
王五 ',                 ' ?'
union all select 332,            '?
',                 ' ?'
union all select 332,            '?
',                 ' ?'
union all select 332,            '?
',                 ' ?'
union all select 333,            '?
',                 ' ?'
union all select 333,            '?
',                 ' ?'
union all select 333,            '?
',                 ' ?'
create function fun(@SN int)
returns varchar(1000)
as
begin
declare @re varchar(1000)
set @re=''
select @re=@re+','+Groups from MyGroups where SN=@SN
return stuff(@re, 1, 1, '')
end
select SN, UserName, Groups=dbo.fun(SN)
from MyGroups
group by SN, UserName

 
select * from dbo.tele01
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 - 3456 a 78STUV ab n中国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,
@str=REPLACE(@str,N'
  ',N' ')

 
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N'
  ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO
declare @s1 varchar(8000)
select @s1='
 2 - 3456 a 78STUV ab n中国opwxyz '
select dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)

use ceshi
select * from staff
--exec master..xp_cmdshell 'copy //172.15.103.2/aa/sa1.txt //172.15.103.5/bb'
declare @ss varchar(13)
set @ss='ss ss   ss'
select replace(@ss,' ','')
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值