Files
relspecgo/pkg/mssql
warkanum cb735f0754 feat(sqlite): add SQLite type mapping and conversion functions
* Implement SQLiteToCanonicalTypes for type mapping
* Add ConvertSQLiteToCanonical and ConvertCanonicalToSQLite functions
* Update mapDataType to utilize new conversion logic
2026-05-19 19:26:09 +02:00
..

MSSQL Package

Provides utilities for working with Microsoft SQL Server data types and conversions.

Components

Type Mapping

Provides bidirectional conversion between canonical types and MSSQL types:

  • CanonicalToMSSQL: Convert abstract types to MSSQL-specific types
  • MSSQLToCanonical: Convert MSSQL types to abstract representation

Type Conversion Tables

Canonical → MSSQL

Canonical MSSQL Notes
int INT 32-bit signed integer
int64 BIGINT 64-bit signed integer
int32 INT 32-bit signed integer
int16 SMALLINT 16-bit signed integer
int8 TINYINT 8-bit unsigned integer
bool BIT 0 (false) or 1 (true)
float32 REAL Single precision floating point
float64 FLOAT Double precision floating point
decimal NUMERIC Fixed-point decimal number
string NVARCHAR(255) Unicode variable-length string
text NVARCHAR(MAX) Unicode large text
timestamp DATETIME2 Date and time without timezone
timestamptz DATETIMEOFFSET Date and time with timezone offset
uuid UNIQUEIDENTIFIER GUID/UUID type
bytea VARBINARY(MAX) Variable-length binary data
date DATE Date only
time TIME Time only
json NVARCHAR(MAX) Stored as text (MSSQL v2016+)
jsonb NVARCHAR(MAX) Stored as text (MSSQL v2016+)

MSSQL → Canonical

MSSQL Canonical Notes
INT, INTEGER int Standard integer
BIGINT int64 Large integer
SMALLINT int16 Small integer
TINYINT int8 Tiny integer
BIT bool Boolean/bit flag
REAL float32 Single precision
FLOAT float64 Double precision
NUMERIC, DECIMAL decimal Exact decimal
NVARCHAR, VARCHAR string Variable-length string
NCHAR, CHAR string Fixed-length string
DATETIME2 timestamp Default timestamp
DATETIMEOFFSET timestamptz Timestamp with timezone
DATE date Date only
TIME time Time only
UNIQUEIDENTIFIER uuid UUID/GUID
VARBINARY, BINARY bytea Binary data
XML string Stored as text

Usage

package main

import (
    "fmt"
    "git.warky.dev/wdevs/relspecgo/pkg/mssql"
)

func main() {
    // Convert canonical to MSSQL
    mssqlType := mssql.ConvertCanonicalToMSSQL("int")
    fmt.Println(mssqlType) // Output: INT

    // Convert MSSQL to canonical
    canonicalType := mssql.ConvertMSSQLToCanonical("BIGINT")
    fmt.Println(canonicalType) // Output: int64

    // Handle parameterized types
    canonicalType = mssql.ConvertMSSQLToCanonical("NVARCHAR(255)")
    fmt.Println(canonicalType) // Output: string
}

Testing

Run tests with:

go test ./pkg/mssql/...

Notes

  • Type conversions are case-insensitive
  • Parameterized types (e.g., NVARCHAR(255)) have their base type extracted
  • Unmapped types default to string for safety
  • The package supports SQL Server 2016 and later versions