In real world everyone has different need and requirement, why we use the same data type to store different types of value. What is the actual difference between Char, Varchar and nVarchar data type.
Char DataType
Char datatype which is used to store the fixed length, non-unicode characters data. Suppose if we declared char (50) it will allocates memory for 50 characters. Once we declare char (50) and if we enter fewer than the number of characters defined (i.e. 6), the remaining length will be space filled to the right. it means other 44 characters of memory will be wasted.
Now we look in the query, How will it effect.
Output of this Select Statement:
Use this data type when the column data is to be of fixed length, which tends to be the case
for customer IDs and bank account IDs.
Nchar DataType
Nchar type is exactly similar to char. But hold character in Unicode format rather than ANSI. The Unicode format has a larger character set range than ANSI. Unicode datatype take exact double memory space in sql server. So use the nchar when you want to store the Unicode value.
varchar DataType
Varchar datatype, which is used to store the alphanumeric values, just like char datatype. If both are similar than what is the difference between char and Varchar? What is the need to create the new datatype? Later in this article we will discuss this. The maximum size of a Varchar column is 8,000 characters. However, if you define the column with no size—that is, Varchar () — then the length will default to 1.
Difference between the char and Varchar datatype
Char belongs to fixed length characters datatype, Varchar belongs to variable length characters datatype. If you define a column to be 20 characters long, but If you enter fewer than the number of characters defined like 10 characters then it will consume only 10 characters memory. It will not consume the defined memory.
Now we look in the query:
Output of the select statement:
So we should use the Char for the fixed length data field and Varchar for the variable length data field.
Nvarchar DataType
Nvarchar datatype same as varchar datatype but only difference nvarchar is used to store Unicode characters and it allows you to store multiple languages in database. nvarchar datatype will take twice as much space to store extended set of characters as required by other languages.
Difference between Varchar and Nvarchar DataType
Varchar(n) | Nvarchar(n) |
1. Non-Unicode Variable Length character data type. Example: Declare @FirstName As Varchar(20) = ‘Developer’ Select @FirstName 2. It takes 1 byte per character. Example: Declare @FirstName As Varchar(20) = ‘Developer’ Select @FirstName AS FirstName, DATALENGTH(@FirstName) As Length Result: FirstName Length Developer 9 3. Can store maximum 8000 Non-Unicode characters. 4. If the value of n is not specified at the time of variable declaration or column definition then it is considered as 1. Example: Declare @FirstName As Varchar =’Developer’ SELECT @firstName FirstName, DATALENGTH(@firstName) Length Result: FirstName Length D 1 5. If n is not specified in while using Cast/Convert functions, then it is considered as 30. Example: Declare @firstName Varchar(50)= ‘Unicode character sets hold up to 65,536’ Select CAST(@firstName As Varchar) FirstName, DATALENGTH(CAST(@firstName As varchar)) Length Result: FirstName Length Unicode character sets hold up 30 | 1. Unicode Variable Length character data type. Nvarchar can store both the Unicode and non-Unicode (i.e) Chinese, Japanese, Korean etc) character. Example: Declare @FirstName As Nvarchar(20) = ‘Developer’ Select @FirstName 2. It takes exactly double bytes per character as compare to Varchar. It takes 2 bytes per Unicode/Non-Unicode character. Example: Declare @FirstName As Nvarchar(20)= ‘Developer Select @FirstName AS FirstName, DATALENGTH(@FirstName) AS Length Result: FirstName Length Developer 18 3. Can store maximum 4000 Unicode/Non-Unicode characters. 4. If the value of n is not specified at the time of variable declaration or column definition then it is considered as 1. Example: Declare @FirstName As Nvarchar =’Developer’ SELECT @firstName FirstName, DATALENGTH(@firstName) Length Result: FirstName Length D 2 5. If n is not specified in while using Cast/Convert functions, then it is considered as 30. Example: Declare @firstName Nvarchar(50)= ‘Unicode character sets hold up to 65,536’ Select CAST(@firstName As Nvarchar) FirstName, DATALENGTH(CAST(@firstName As Nvarchar)) Length Result: FirstName Length Unicode character sets hold up 60 |
So if you are not using other languages then it’s better to use varchar datatype instead of nvarchar.
No comments:
Post a Comment