當前位置:首頁 » 編程語言 » sql漢字ascii
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql漢字ascii

發布時間: 2022-05-15 12:46:43

『壹』 sql SERVER ASCII碼問題

全形字元是雙位元組的,ascii函數只取第一個位元組,所以得到的是163,對於雙位元組應該使用UNICODE函數

SELECT UNICODE('(')

『貳』 SQL數據類型nchar,char,varchar與nvarchar所佔位元組數是多少

nchar與char是相似的,nvarchar與varchar是相似的。

(1)char類型: 對英文(ASCII)字元佔用1個位元組,對一個漢字佔用2個位元組,CHAR存儲定長數據很方便,CHAR欄位上的索引效率級高,比如定義 char(10),那麼不論你存儲的數據是否達到了10個位元組,都要佔去10個位元組的空間,不夠的字元用空格去填。因為是固定長度,所以速度效率高。

(2)Varchar類型:Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"。

(3)而char 不一樣,比如char(100),它的值是"qian",而實際上它在資料庫中是"qian "(qian後共有96個空格,就是把它填滿為100個位元組)。

(4)由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉。

(5)VARCHAR存儲變長數據,但存儲效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什麼「+1」呢?這一個位元組用於保存實際使用了多大的長度。

(6)nchar類型和Nvarchar類型是怎麼一回事呢?為了與其他多種字元的轉換,如中文,音標等,對每個英文(ASCII)字元都佔用2個位元組,對一個漢字也佔用兩個位元組,所有的字元都佔用2個位元組。

(7)關於長度與漢字:varchar(100)/char(100)能存50個漢字,nvarchar(100)/nchar(100)能存100個漢字。

『叄』 通過sql語句實現把如下數據轉換為可識別的字元串,應該是十六進制轉換為ASCII碼。

要看你是什麼編碼。
如果是ASC碼那麼就是8位2進制一個字元,也就是兩個十六進制位。
所以,你可以將這個十六進制字元串除0x以外,兩位一組,每一組可以使用CHAR(0x0C)的方式轉換為字元,再串加在一起就行了。
如果是UNICODE字元,那麼就是4位十六進制(16位二進制)一組進行轉換。
如第一個字元就是:select nchar(0x0C45),第二個字元就是select nchar(0x0000)

『肆』 請問在sql中如何把asc碼轉換成unicode字元

這我沒有弄過幫不了你

『伍』 SQL語句,通過asc(mid(username,1,1)函數,獲得的中文的ASCii碼,怎麼轉換成中文。

這個應該是ACCESS中的問題


可以使用chr函數將ascii碼轉回對應的字元。例如:

chr(-12091) 返回 '信'


對應的中文,請參閱下圖

『陸』 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]

『柒』 如何修改postgresql資料庫字元集原來是SQL_ASCII 現在想改為UTF-8

新建一個模板,比如 template_utf8 ,設置好UTF-8以及plpgsql之類的lang還有插件,從這個資料庫新建就全是UFT-8了。
如果是更改的話,需要先把資料庫導出為SQL, 再新建,而後導入。導入前,修改SQL里的create 語句,指定字元集。有漢字的話,另存為UTF-8的編碼,再導入。

『捌』 資料庫 SQL中對結果集排序時 漢字按什麼排序 ASCII碼么

預設是按照拼音首字母順序

『玖』 從SQL SERVER資料庫中怎樣取出Ascii碼並還原成字元

1、查詢資料庫(test)中的所有表名的方法:

SELECT name
FROM [test]..sysobjects where xtype='U'
********
補充:
如果有的表不存在【時間】那就用下面的語句直接把含有【時間】列的表名找到:
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='時間'
**********

2、遍歷這個表名取出數據插入到另外的資料庫中(SqlServer中的遍歷方法我不是很清楚,給你提供個思路,oracle的話我就能把程序寫出來了O(∩_∩)O~)。

如:遍歷結果存儲到資料庫test2中
insert into [test2]..遍歷出的表名 select * from 遍歷出的表名 where datediff(day,'2009-08-07',時間)>0;

重復上面的sql語句指導講資料庫test中的表名完全遍歷完為止。

*************************************************************
補充:我試驗了一下下面把實驗代碼給你(建一個存儲過程)
create proc test as
--定義游標變數
declare cur1 cursor for
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='時間'
--定義臨時變數
declare @tmp varchar(1000)
--定義sql字元串
declare @strsql varchar(4000)
--打開游標
open cur1
--讀取第一條數據,也就是第一個表名
fetch next from cur1 into @tmp
--是讀完
while(@@fetch_status = 0)
begin
--連接sql文
set @strsql='insert into [test2]..'+@tmp++' select * from '+@tmp+' where datediff(day,'+char(39)+'2009-08-07'+char(39)+',時間)>0'
--執行這個sql
exec(@strsql)
--讀取下一條數據
fetch next from cur1 into @tmp
end
--關閉游標
close cur1
--摧毀游標所佔資源
deallocate cur1
*************************************************

---
以上,希望對你有所幫助。

『拾』 SqlServer設置表主鍵的SQL語句中ASC關鍵字的作用是什麼

SqlServer設置表主鍵的SQL語句中ASC關鍵字的作用是什麼?
asc是升序,從小到大排序顯示;desc是降序,從大到小顯示。
CLUSTERED 是聚集索引