sql全角字符
发布时间: 2025-08-26 21:43:58
‘壹’ sql语句怎么判断一个字符是全角还是半角
selectunicode('s')
/*返回值为65281~65374,则是全角,33~126为半角*/
/*下面为全角与半角的转换函数*/
ifobject_id(N'u_convert',N'FN')isnotnull
dropfunctionu_convert
GO
/*
转换原理
全角字符unicode编码从65281~65374
半角字符unicode编码从33~126
空格比较特殊,全角为12288,半角为32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则COLLATELatin1_General_BIN
是保证字符顺序按unicode编码排序
*/
createfunctionu_convert(
@strnvarchar(4000),--要转换的字符串
@flagbit--转换标志,0转换成半角,1转换成全角
)
returnsnvarchar(4000)
AS
begin
declare
@patnvarchar(8),
@stepint,
@iint,
@spcint
if@flag=0
begin
select@pat=N'%[!-~]%',@step=-65248,
@str=replace(@str,N'',N'')
end
else
begin
select@pat=N'%[!-~]%',@step=65248,
@str=replace(@str,N'',N'')
end
set@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
while@i>0
select@str=replace(@str,
substring(
@str,@i,1),
nchar(unicode(substring(@str,@i,1))+@step)),
@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
return(@str)
end
GO
测试语句:
selectdbo.u_convert('11',1)as[a],'11'as[b],dbo.u_convert('111',0)as[c]
‘贰’ sql数据库Text类型字段导出oracle数据时乱码怎么解决
如果所有导出的全角字符都是乱码的话,应该是字符集编码格式不同引起的。需要注意的是要保证导出和导入时的字符集是统一的,或是子集与超集的关系。
‘叁’ sql里面的空格区分全角和半角么
有区分的,有时切换到全角输入时,字体间的间距会明显变大,但不影响运行,只是不美观而已。
‘肆’ sql数据库中把字段数据中半角括号修改为全角括号
使用replace函数:
函数语法:replace(列名称,'被替换的字符','替换的字符')
updatetablea=replace(a,'(','(')--把表tablea列的半角括号修改为全角括号
热点内容