sql語法中u‘‘ n‘‘詳解
阿新 • • 發佈:2021-01-08
技術標籤:資料庫
今天翻閱檢視的時候,發現sql語句中有N'' U''這樣的語法,不懂什麼意思,於是搜尋了一下,得出如下結論。
例子:
selectU'中文'fromdual;
selectN'中文'fromdual;
那麼語句中的N以及U分別代表什麼意思?
N在這裡表示Unicode,就是雙位元組字元。對於西文字元,用一個位元組來儲存過足夠了,對於東方文字字元,就需要兩個位元組來儲存。Unicode為了統一、規範、方便、相容,就規定西文字元也用兩個位元組來儲存。
也就是說加N就表示字串用Unicode方式儲存。對應的就是NCHAR和NVARCHAR2型別。再比如:
select @status = N'stopped' select @status = 'stopped'
實際上上述兩句賦值的結果是一樣的,因為變數型別就是 nvarchar(Unicode 型別)。
而有些地方(比如:sp_executesql 的引數)不能自動轉換,所以需要加 N 了。
那這個東東的作用是啥呢?
1.在做union all的時候,如果兩個庫的字符集不匹配,那會報錯,可以用u和n進行轉化。
下面這條sql就會報錯
select
u''
from a.dual
union
select
''
from b.dual
--ORA-12704: 字符集不匹配
需要修改為:
select
u''
from dual
union
select
u''
from dual
2.insert 和update的時候,在有的資料庫不加N就會是亂碼
insert into replies values(replies_seq.nextval,N'頂',sysdate,2);
綜上。