今天翻閱檢視的時候,發現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 需要...