C # เทียบเท่ากับ SQL Server DataTypes


594

สำหรับประเภทข้อมูล SQL Server ต่อไปนี้ประเภทข้อมูลที่สอดคล้องกันใน C # คืออะไร

ตัวเลขที่แน่นอน

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

ตัวเลขโดยประมาณ

float
real

วันและเวลา

date
datetimeoffset
datetime2
smalldatetime
datetime
time

ตัวละครสตริง

char
varchar
text

อักขระ Unicode Strings

nchar
nvarchar
ntext

ไบนารีสตริง

binary
varbinary
image

ประเภทข้อมูลอื่น ๆ

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(ที่มา: MSDN )


1
ผมคิดว่านี่คือสิ่งที่คุณอาจจะมองหา: แมป CLR ตัวแปรข้อมูล
แอนดรูกระต่าย

คำตอบ:


1092

นี้สำหรับSQL Server 2005 มีการปรับปรุงรุ่นของตารางสำหรับSQL Server 2008 , SQL Server 2008 R2 , SQL Server 2012และSQL Server 2014

ประเภทข้อมูล SQL Server และ. NET Framework เทียบเท่า

ตารางต่อไปนี้แสดงรายการชนิดข้อมูล Microsoft SQL Server รายการเทียบเท่าในรันไทม์ภาษาทั่วไป (CLR) สำหรับ SQL Server ในSystem.Data.SqlTypes namespace และรายการเทียบเท่า CLR ดั้งเดิมใน Microsoft .NET Framework

SQL Server data type          CLR data type (SQL Server)    CLR data type (.NET Framework)  
varbinary                     SqlBytes, SqlBinary           Byte[]  
binary                        SqlBytes, SqlBinary           Byte[]  
varbinary(1), binary(1)       SqlBytes, SqlBinary           byte, Byte[] 
image                         None                          None

varchar                       None                          None
char                          None                          None
nvarchar(1), nchar(1)         SqlChars, SqlString           Char, String, Char[]     
nvarchar                      SqlChars, SqlString           String, Char[] 
nchar                         SqlChars, SqlString           String, Char[] 
text                          None                          None
ntext                         None                          None

uniqueidentifier              SqlGuid                       Guid 
rowversion                    None                          Byte[]  
bit                           SqlBoolean                    Boolean 
tinyint                       SqlByte                       Byte 
smallint                      SqlInt16                      Int16  
int                           SqlInt32                      Int32  
bigint                        SqlInt64                      Int64 

smallmoney                    SqlMoney                      Decimal  
money                         SqlMoney                      Decimal  
numeric                       SqlDecimal                    Decimal  
decimal                       SqlDecimal                    Decimal  
real                          SqlSingle                     Single  
float                         SqlDouble                     Double  

smalldatetime                 SqlDateTime                   DateTime  
datetime                      SqlDateTime                   DateTime 

sql_variant                   None                          Object  
User-defined type(UDT)        None                          user-defined type     
table                         None                          None 
cursor                        None                          None
timestamp                     None                          None 
xml                           SqlXml                        None

2
int ใน. NET เหมือนกับ Int32 ในตารางนี้ดังนั้นมันจะเป็น int ใน SQL Server เช่นกัน
ÖrjanJämte

ควรใช้ประเภทข้อมูล CLR ใด (SQL Server) shortในกรอบงาน. Net
Yogesh Patel

3
@yogeshpatel short( docs.microsoft.com/en-us/dotnet/csharp/language-reference/ ...... ) เท่ากับ System.Int16 ในรายการนี้ ดังนั้นจะเป็นขนาดเล็กใน SQL Server
ÖrjanJämte


7

SQL Server และ. NET Framework ขึ้นอยู่กับระบบชนิดที่แตกต่างกัน ตัวอย่างเช่นโครงสร้าง. NET Framework Decimal มีสเกลสูงสุด 28 ในขณะที่ประเภททศนิยมและ SQL ของ SQL Server มีสเกลสูงสุด 38 คลิกลิงค์ต่อไปนี้ ! เพื่อดูรายละเอียด

https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx


คุณช่วยอธิบายได้ไหมว่าทำไมฉันถึงได้ -1 สำหรับคำตอบนี้?
Salman

8
ไม่ใช่ฉันที่ลงคะแนนคำตอบ แต่เป็นการดีที่คุณควรตอบคำถามไม่ได้ให้ลิงค์กับมัน
Esteban Verbel

6

ในกรณีที่ทุกคนกำลังมองหาวิธีการแปลงจาก / เป็นรูปแบบ C # และ SQL Server ต่อไปนี้คือการใช้งานที่ง่าย:

private readonly string[] SqlServerTypes = { "bigint", "binary", "bit",  "char", "date",     "datetime", "datetime2", "datetimeoffset", "decimal", "filestream", "float",  "geography",                              "geometry",                              "hierarchyid",                              "image",  "int", "money",   "nchar",  "ntext",  "numeric", "nvarchar", "real",   "rowversion", "smalldatetime", "smallint", "smallmoney", "sql_variant", "text",   "time",     "timestamp", "tinyint", "uniqueidentifier", "varbinary", "varchar", "xml" };
private readonly string[] CSharpTypes    = { "long",   "byte[]", "bool", "char", "DateTime", "DateTime", "DateTime",  "DateTimeOffset", "decimal", "byte[]",     "double", "Microsoft.SqlServer.Types.SqlGeography", "Microsoft.SqlServer.Types.SqlGeometry", "Microsoft.SqlServer.Types.SqlHierarchyId", "byte[]", "int", "decimal", "string", "string", "decimal", "string",   "Single", "byte[]",     "DateTime",      "short",    "decimal",    "object",      "string", "TimeSpan", "byte[]",    "byte",    "Guid",             "byte[]",    "string",  "string" };

public string ConvertSqlServerFormatToCSharp(string typeName)
{
    var index = Array.IndexOf(SqlServerTypes, typeName);

    return index > -1
        ? CSharpTypes[index]
        : "object";
}

public string ConvertCSharpFormatToSqlServer(string typeName)
{
    var index = Array.IndexOf(CSharpTypes, typeName);

    return index > -1
        ? SqlServerTypes[index]
        : null;
}

แก้ไข: พิมพ์ผิดคงที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.