sql語法中u n 詳解

2021-10-14 04:16:32 字數 1019 閱讀 6263

今天翻閱檢視的時候,發現sql語句中有n'' u''這樣的語法,不懂什麼意思,於是搜尋了一下,得出如下結論。

例子:

select u'中文' from dual;

select n'中文' from dual;

那麼語句中的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);
綜上。

詳解sql中exists和in的語法與區別

exists和in的區別很小,幾乎可以等價,但是sql優化中往往會注重效率問題,今天咱們就來說說exists和in的區別。exists語法 select from table whealqkydre exists 子查詢 將主查詢的結果,放到子查詢結果中進行校驗,如子查詢有資料,則校驗成功,那麼符合...

Mybatis之動態SQL語法詳解

1 sql if sql where 判斷 ognl表示式 select from tbl employee id and last name like and email and gender 2 sql trim自定義字串擷取 用的不多,根據需求選擇 select from tbl employ...

詳解中括號語法及點語法

點語法 點語法根據物件中的鍵來獲取相應的值.let obj a a console.log obj.a a 建立相應的鍵值對 obj.b b console.log obj.b b 中括號語法 中括號語法也能根據物件中的鍵來獲取值.let obj a a console.log obj a a 需要...