Convert INT to VARCHAR SQL
Converting INT to VARCHAR in SQL: A Comprehensive Guide

Learn various methods to convert integer data types to character strings (VARCHAR) in SQL, focusing on common database systems like Sybase, SQL Server, and PostgreSQL. Understand the syntax, implications, and best practices for type conversion.
Converting data types is a fundamental operation in SQL, often necessary when concatenating numbers with text, formatting output, or preparing data for specific functions. This article delves into the process of converting an INT
(integer) data type to a VARCHAR
(variable-length character string) in SQL. While the core concept is universal, the exact syntax and available functions can vary slightly between different database management systems (DBMS). We'll cover common approaches and highlight specific considerations for Sybase, SQL Server, and PostgreSQL.
Why Convert INT to VARCHAR?
There are several common scenarios where converting an integer to a character string becomes essential:
- Concatenation: When you need to combine a numeric value with a string literal (e.g., 'Order ID: ' + 123).
- Formatting: To apply specific formatting (e.g., adding leading zeros, currency symbols) that is easier to achieve with string manipulation functions.
- Display Purposes: For presenting data in reports or user interfaces where all output is expected as text.
- Function Arguments: Some string-specific functions or procedures may require their arguments to be of a character type.
- Data Export/Integration: When exporting data to systems that expect all fields as strings.
flowchart TD A[Start: Integer Value] --> B{Need String Representation?} B -- Yes --> C[Use CAST() or CONVERT()] C --> D[Specify Target Length (VARCHAR(N))] D --> E[Result: VARCHAR String] B -- No --> F[Keep as Integer] F --> G[End: Integer Value]
Decision flow for converting INT to VARCHAR
Standard SQL Conversion Functions: CAST and CONVERT
The two most common and widely supported functions for type conversion in SQL are CAST()
and CONVERT()
. While CAST()
is part of the SQL standard, CONVERT()
is a proprietary function primarily found in SQL Server and Sybase, offering some additional formatting options.
Using CAST()
CAST()
is the ANSI SQL standard way to convert an expression from one data type to another. Its syntax is straightforward:
CAST(expression AS data_type)
When converting an INT
to VARCHAR
, you must specify the desired length of the VARCHAR
type. If the specified length is too short, the value might be truncated, leading to data loss or errors.
SELECT CAST(12345 AS VARCHAR(10)) AS ConvertedValue;
-- Result: '12345'
SELECT 'Order ID: ' + CAST(123 AS VARCHAR(5)) AS OrderDetails;
-- Result: 'Order ID: 123'
Examples of using CAST() for INT to VARCHAR conversion
Database-Specific Implementations
While CAST()
is generally available, some database systems offer their own specialized functions or have nuances in how CAST()
behaves.
Sybase / SQL Server
Both Sybase and SQL Server support CAST()
and also provide the CONVERT()
function. CONVERT()
offers more control over the output format, especially for date/time types, but for INT
to VARCHAR
, its usage is similar to CAST()
.
CONVERT(data_type, expression [, style])
For INT
to VARCHAR
, the style
parameter is typically not used or has no effect.
SELECT CONVERT(VARCHAR(10), 12345) AS ConvertedValue;
-- Result: '12345'
-- Concatenation example in Sybase/SQL Server
SELECT 'Product Code: ' + CONVERT(VARCHAR(5), 789) AS ProductInfo;
-- Result: 'Product Code: 789'
PostgreSQL
PostgreSQL fully supports CAST()
. Additionally, it offers a shorthand cast syntax using a double colon ::
.
expression::data_type
SELECT CAST(9876 AS VARCHAR(10)) AS ConvertedValue;
-- Result: '9876'
-- Shorthand cast in PostgreSQL
SELECT 54321::VARCHAR(10) AS ShorthandConvertedValue;
-- Result: '54321'
-- Concatenation example in PostgreSQL (using || operator)
SELECT 'User ID: ' || CAST(101 AS VARCHAR(5)) AS UserDetails;
-- Result: 'User ID: 101'
MySQL
MySQL supports CAST()
and also has the CONCAT()
function which implicitly converts numeric arguments to strings for concatenation.
SELECT CAST(12345 AS CHAR(10)) AS ConvertedValue; -- CHAR is often used for fixed-length strings
-- Result: '12345'
-- Using CONCAT() for implicit conversion
SELECT CONCAT('Item Quantity: ', 500) AS ItemInfo;
-- Result: 'Item Quantity: 500'
VARCHAR
target. If the integer value exceeds the specified length, it can lead to truncation or an error, depending on the database system and its configuration. For example, CAST(12345 AS VARCHAR(3))
might result in an error or '123' (truncated).Handling NULL Values During Conversion
When an INT
column contains NULL
values, converting it to VARCHAR
will typically result in NULL
for the corresponding VARCHAR
column. This behavior is consistent across most SQL databases. If you need to represent NULL
integers as an empty string or a specific placeholder, you'll need to use conditional logic like COALESCE()
or ISNULL()
.
CREATE TABLE #TestInt (ID INT, Value INT);
INSERT INTO #TestInt (ID, Value) VALUES (1, 100), (2, NULL), (3, 200);
SELECT
ID,
Value,
CAST(Value AS VARCHAR(10)) AS ConvertedValue,
COALESCE(CAST(Value AS VARCHAR(10)), 'N/A') AS ConvertedWithNullHandling
FROM #TestInt;
-- Expected Output:
-- ID | Value | ConvertedValue | ConvertedWithNullHandling
-- ---|-------|----------------|--------------------------
-- 1 | 100 | '100' | '100'
-- 2 | NULL | NULL | 'N/A'
-- 3 | 200 | '200' | '200'
Demonstrating NULL handling during INT to VARCHAR conversion
CONCAT()
) handle this gracefully, others might require explicit CAST()
or CONVERT()
to avoid errors or unexpected behavior, particularly when the +
operator is used for both addition and string concatenation.