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列的半形括弧修改為全形括弧
熱點內容