NUMBER without precision |
NUMERIC(38,18). |
Up to 20 integer digits and 18 decimals. If you know a column holds whole numbers or money, set a narrower type. |
NUMBER(p), NUMBER(p,s) |
Integers by width: SMALLINT up to 4 digits, INT up to 9, BIGINT up to 18, wider as NUMERIC(p,0). With a scale, NUMERIC(p,s). |
A negative scale such as NUMBER(5,-2) becomes NUMERIC(7,0), so the value keeps its trailing zeros. |
VARCHAR2, CHAR, CLOB, LONG |
NVARCHAR(n) and NCHAR(n) at the same length; CLOB, NCLOB, and LONG become NVARCHAR(MAX). |
Text is stored as Unicode, so accented and non-Latin characters arrive intact whatever the Oracle character set. |
DATE, TIMESTAMP |
DATE becomes DATETIME2(0), time of day included; TIMESTAMP becomes DATETIME2(7). |
SQL Server keeps 7 fractional digits, so a TIMESTAMP(9) loses the last two. |
TIMESTAMP WITH TIME ZONE, WITH LOCAL TIME ZONE |
DATETIMEOFFSET(6), stored as the UTC instant. |
The moment is exact, but the original offset or region name is not kept. Check code that displays local times. |
BLOB, RAW, BINARY_FLOAT, BINARY_DOUBLE |
VARBINARY(MAX), VARBINARY(n), REAL, and FLOAT. |
No action needed; bytes and floating-point values are copied as they are. |
INTERVAL |
Text, VARCHAR(64). |
SQL Server has no interval type. The application must parse the value if it calculates with it. |
| Identity columns |
INT or BIGINT IDENTITY by precision, with the existing key values. |
The next insert in SQL Server gets a key above the copied ones. Keys filled by sequences and triggers are copied as values only. |