1. 程式人生 > >我不寫程式碼,我只是GitHub的搬運工

我不寫程式碼,我只是GitHub的搬運工

Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示

如果還為了這個糾結,就直接看看後面的解說,做決定吧。

一般如果用到中文或者其它特殊字元,我就會使用n開頭的型別,否則的話直接使用var開頭的。 在

oracle中,N開頭的型別是每個字元固定2個長度

以2結尾的型別是變長字串,以實際長度儲存

Oracle中nvarchar2和varchar2的共同點:

1、NVARCHAR2中儲存中文字時,一箇中文字當一個字元來處理 NVARCHAR2(10)是可以存進去10個漢字的,如果用來存英文也只能存10個字元。 2、而VARCHAR2中一箇中文字當兩個字元來處理 VARCHAR2(10)的話,則只能存進5個漢字,英文則可以存10個

3、CHAR(size)和NCHAR(size)的區別

    CHAR如果存放字母數字佔1個位元組,存放GBK編碼的漢字存放2個位元組,存放UTF-8編碼的漢字佔用3個位元組;

    NCHAR以字元儲存,一個漢字佔一個

sql server中的varchar和Nvarchar有什麼區別?

答:
varchar(n)
長度為 n 個位元組的可變長度且非 Unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

nvarchar(n)
包含 n 個字元的可變長度 Unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。

兩欄位分別有欄位值:我和coffee
那麼varchar欄位佔2×2+6=10個位元組的儲存空間,而nvarchar欄位佔8×2=16個位元組的儲存空間。

如欄位值只是英文可選擇varchar,而欄位值存在較多的雙位元組(中文、韓文等)字元時用nvarchar
聯機幫助上的:
char(n)  定長 索引效率高 程式裡面使用trim去除多餘的空白 n 必須是一個介於 1 和 8,000 之間的數值,儲存大小為 n 個位元組
varchar(n) 變長 效率沒char高 靈活 n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組
text(n) 變長 非Unicode資料
nchar(n) 定長 處理unicode資料型別(所有的字元使用兩個位元組表示) n 的值必須介於 1 與 4,000 之間。儲存大小為 n 位元組的兩倍
nvarchar(n) 變長 處理unicode資料型別(所有的字元使用兩個位元組表示) n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零
ntext(n)  變長 處理unicode資料型別(所有的字元使用兩個位元組表示)
很多開發者進行資料庫設計的時候往往並沒有太多的考慮char, varchar型別,有的是根本就沒注意,因為儲存價格變得越來越便宜了,忘記了最開始的一些基本設計理論和原則,這點讓我想到了現在的年輕人,大手一揮一把人民幣就從他手裡溜走了,其實我想不管是做人也好,做開發也好,細節的把握直接決定很多東西。當然還有一部分人是根本就沒弄清楚他們的區別,也就隨便選一個。在這裡我想對他們做個簡單的分析,當然如果有不對的地方希望大家指教。

1、CHAR。CHAR儲存定長資料很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到trim()

2、VARCHAR。儲存變長資料,但儲存效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR型別的實際長度是它的值的實際長度+1。為什麼“+1”呢?這一個位元組用於儲存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、TEXT。text儲存可變長度的非Unicode資料,最大長度為2^31-1(2,147,483,647)個字元。

4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示儲存的是Unicode資料型別的字元。我們知道字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar

我把他們的區別概括成:
CHAR,NCHAR 定長,速度快,佔空間大,需處理
VARCHAR,NVARCHAR,TEXT 不定長,空間小,速度慢,無需處理
NCHAR、NVARCHAR、NTEXT處理Unicode碼
varchar在SQL Server中是採用單位元組來儲存資料的,nvarchar是使用Unicode來儲存資料的.中文字元儲存到SQL Server中會儲存為兩個位元組(一般採用Unico編碼),英文字元儲存到資料庫中,如果欄位的型別為varchar,則只會佔用一個位元組,而如果欄位的型別為nvarchar,則會佔用兩個位元組
  正常情況下,我們使用varchar
也可以儲存中文字元,但是如果遇到作業系統是英文作業系統並且對中文字型的支援不全面時, 在SQL Server儲存中文字元為varchar就會出現亂碼(顯示為??).而且正常情況下,主機都會支援中文的環境,所以如果使用varchar來儲存資料,在開發階段是發現不了的.多數情況下,在佈署
  
當然,使用nvarchar儲存英文字元會增大一倍的儲存空間.但是在儲存代價已經很低廉的情況下,優先考慮相容性會給你帶來更多好處的.  所以在Design的時候應該儘量使用nvarchar來儲存資料.只有在你確保該欄位不會儲存中文的時候,才採用varchar來儲存.的時候也不會有問題.
  但是!如果佈署的主機是英文作業系統,並且不支援中文環境,那問題就出來了.所有的varchar欄位在儲存中文的時候都會變成亂碼(顯示為??).而且一般情況下你不會知道這是因為你採用了錯誤的資料型別來儲存所造成的,你會試著去裝中文字型,試著去設定作業系統的語言環境...這些都不能解決問題,唯一能解決問題的是把資料庫欄位的型別個性為nvarchar(或者nchar).對專案管理比較熟悉的朋友應該都知道,到佈署階段再來修改資料庫是一個很恐怖的事情.
  使用nvarchar的另一個非常好處就是在判斷字串的時候可以不需要考慮中英文兩種字元的差別.

相關推薦

程式碼只是GitHub搬運工

Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示 如果還為了這個糾結,就直接看看後面的解說,做決定吧。 一般如果用到中文或者其它特殊字元,我就會使用n開頭的型別,否則的話直接使用var開頭的。 在 oracle中,N開頭的型別是每

【負雪明燭】編寫程式碼只是GitHub搬運工

北京郵電大學研究生在讀。 目前研究方向為推薦系統研發。 github地址(歡迎follow和star~~):fuxuemingzhu 郵箱:[email protected] 個人部落格:fuxuemingzhu's blog

生產程式碼只是GitHub搬運工

問題描述 vtk中顯示模型的各個檢視,例如前檢視、後檢視、左檢視、右檢視等。 解析 我們通過調整相機位置、焦點位置、朝上方向來實現各個檢視。 相機位置:即相機所在的位置,用方法vtkCamera::SetPosition()設定; 相機焦點:從相機

註釋今晚關心程式碼想你

## 一 世上本沒有註釋,垃圾程式碼寫多了,也便有了註釋。 註釋彷彿是依賴於程式碼存在的。 你會要求程式碼乾淨,整潔,優雅,雖然你自己都做不到這三點。 但是從來沒聽過你要求註釋要押韻,要是七言絕句,要形散而神不散。 編譯器,都會把註釋忽略掉。 甚至有人說好的程式碼即是註釋,你看,其實連人都不需要註釋

喜歡程式碼卻為何堅持做程式設計師?

簡介一轉眼,距離自己成為一名碼農,已近一年了。回想當初,剛成為猿類時的那種對程式碼的激情,已經消失的差不多了。這個可能也跟我當初的想法有關,本身是數學科班出身,又接受了培訓,結果剛找工作時,誤打誤撞進入了售前的行業,寫程式碼就成了自己的未竟事件。我原本的職業規劃是:前端程式設

生產程式碼只是程式碼搬運工!超級多的 ——> 第三方

我不生產程式碼,只是程式碼的搬運工!無意間看到一篇部落格裡面全是第三方,簡直“喪心病狂”,能看到懷疑人生。總有一款適合你. ————————————————> 1、通過CocoaPods安裝 專案名稱 專案資訊 AFNetworking 網路請求元件 FMDB 本地資料庫元件

生產程式碼只是程式碼搬運工!超級多的 ——> 第三方

我不生產程式碼,只是程式碼的搬運工!無意間看到一篇部落格裡面全是第三方,簡直“喪心病狂”,能看到懷疑人生。總有一款適合你. ————————————————> 1、通過CocoaPods安裝 專案名稱 專案資訊 FMDB 本地資料庫元件

讀:只要還在愛從不主動離開如果愛了從不留戀!

自己的 幸福 個人 分享圖片 一起 主動 圖片 ima 也會 今晚在《南川大叔》的公眾號上面,看到這樣的一個配圖:只要我還在愛,我從不主動離開,如果我不愛了,我從不留戀!心中不由有一起感動,或許自己曾經也是這樣的心態而過的,現在的心境也是如此。或許真的經歷過的

【摩西的部落格 愛it 愛生活 愛折騰 】生產技術只是開源的搬運工

網名:摩西 E-mail: [email protected] QQ群:260472622 (上海it之家) QQ群:63535983 (上海java之家) 專注於Java,現從事家政服務、移動服務、汽車產品、互聯生活、公益旅遊等應用開發,喜歡研究高併發、叢

想安靜地程式碼領導卻跟談大局 講奉獻

                                                                                                    轉自:36氪(編譯組出品。編輯:郝鵬程)http://36kr.com/p/5121539.html編者按:是

#程式設計師節公司請國外妹子表演程式設計師吐槽:還怎麼讓安心程式碼

網際網路行業就目前來說是個火熱行業,高薪就讓很多人選擇進入了這個行業,現在網際網路行業幾乎就是搶時間,加班幾乎是每天必備的專案,前幾天程式設計師晒出自己的加班時間,一個月達到了120小時,但是薪資待遇也是非常好的,最近程式設計師節就有程式設計師晒出了自己公司的節日福利。 在這裡我推薦下自己整

分享一個大學時通過程式碼十天賺了兩萬塊錢的經歷!

上圖是昨天看到的一篇文章,講述了我對於用技術兼職的一些思考。 恰好之前兼職的專案方也看到了這篇文章,因為我在文章中提到了“爬蟲”,  他們擔心社會大眾看到該文的時候,由於對爬蟲不瞭解,可能會誤把“爬蟲”和“資訊保安”、“黑客行為”聯絡起來,對他們的專案有不好的影響。 我心想,既然這樣,為了引起

了 300000 行基礎設施程式碼學到了這五條經驗

本文為作者 Yevgeniy Brikman 分享了他在 Gruntwork 工作時建立並維護一個超過 30 萬行基礎設施程式碼的庫(https://gruntwork.io/infrastructure-as-code-library/)時學到的五條經驗。

其實會程式設計會臉滾鍵盤

背景 之前的工作中使用Hive一直都是用的內表,對於外表一直都沒有正經研究過,最近偶爾使用了一次,就整出了不小的麻煩,而且發現是跟HDFS許可權有關,然而就發現關於HDFS的許可權問題理解的還是太少了,所以把問題整理一下。 一,Hive外表載入HDFS檔案錯誤

年輕時單元測試

在一個多人協作的大型專案中,我們在開發的過程中可能經常會面臨到這樣的問題: 哎,這次我沒有改動到這裡啊,這怎麼會有bug呢 哎,怎麼新加了個功能原來的功能受影響了呢 哎,這裡的樣式為什麼亂掉了 當我們被提出這些bug的時候,我們是二臉懵逼的,因為這不符合一個程式設計師的預期!!!那麼我們如何能夠避免

阿里程式設計師升職後抱怨想帶人程式碼網友:碼農思維

我相信大家很早就聽過一句話,那就是不想當將軍的士兵不是好士兵,如果讓你選擇,你會選擇當一個一線員工,還是一個領導呢?我相信很多人都會選擇當領導,但是最近在職場論壇看到一位不一樣的朋友。 他是一名阿里的程式設計師,幹了4年晉升到P7,他要開始帶人,不再只是單純的寫程式碼,但是他卻表示自己不願帶人,

4年阿里程式設計師升職後抱怨想帶人程式碼網友:碼農思維

​本人從事線上教育c++十年工作經驗現在精心整理了一套從小白到專案實踐開發各種學習資料如果你想學想加入我們請關注我在私信回覆“程式設計”就可以領取學習資料!!!請關注我看我主頁資料公告加裙775356268 我相信大家很早就聽過一句話,那就是不想當將軍的士兵不是好士兵,如果

【調皮的程式碼調皮的玩程式碼調皮的享生活!

網站 歡迎關注個人,不僅為你推薦最新的博文,還有更多驚喜和資源在等著你!一起學習共同進步! E起讀書 歡迎關注E起讀書頻道,我們一起學習,一起進步!為你推薦各種書籍的解讀,還有更多驚喜和資源在等著你!

是認真的知道能否財富自由

國慶長假八天,孩子剛踏入大學校門,沒有回家,我也不願意去景點給全國人民添堵,想想做點什麼呢?突然想起來李笑來說過,利用長長的假期可以寫書、開公司,我正好已經積累了200多頁的素材,那就寫書吧。 今天正好有人在steemit微信群裡聊起來,寫作是普通人實現財富自由的機會,我真沒敢有這樣的奢望,但感覺“寫書”這

哪裏的香港服務器丟包告訴你

最好的 分開 選擇 避免 返回 體驗 存在 可能 電腦 若想最大限度的減少服務器丟包的可能,首先要選擇一條好的線路。好的線路除了可以提供更穩定的網絡外,也能加快用戶的訪問速度。 海外機房目前最好的線路就是直連線路了,而香港KTO機房采取的是全港最好的兩條線路:PCC