如何在SQL Server中将int转换或转换为字符串

时间:2019-05-07 21:35:56

标签: sql sql-server

查看包含某人的SSN的最后4个的列,该列最初是作为int数据类型创建的。现在,以0开头的SSN在数据库中注册为0。

如何将列及其信息从int转换为字符串以供将来证明?

5 个答案:

答案 0 :(得分:1)

您应该转换。 CONVERT(VARCHAR(4), your_col)

答案 1 :(得分:1)

如果您特别想要填充零的数字,那么最简单的解决方案是format()

select format(123, '0000')

如果要修复表格,请执行以下操作:

alter table t alter column ssn4 char(4);  -- there are always four digits

然后更新值以获取前导零:

update t
    ssn4 = format(convert(int, ssn4), '0000');

或者,如果仅希望下游用户拥有该字符串,则可以使用计算列:

alter table t
    add ssn4_str as (format(ssn4, '0000'));

答案 2 :(得分:0)

如果要添加前导零,请使用:

SELECT RIGHT('0000'+ISNULL(SSN,''),4)

答案 3 :(得分:0)

第一件事永远不要将SSN或邮政编码存储为任何数字类型。 其次,您应该修复基础表结构,而不要依赖于转换...但是,如果遇到麻烦,这是一个可以帮助您的case语句示例。

IF OBJECT_ID('tempdb..#t') IS NOT NULL
    BEGIN
        DROP TABLE #t
    END
GO
CREATE TABLE #t(
    LastFourSSN INT
)

INSERT INTO #t(LastFourSSN)
VALUES('0123'),('1234')

SELECT LastFourSSN --strips leading zero
FROM #t

SELECT -- adds leading zero to anything less than four charaters
    CASE 
        WHEN LEN(LastFourSSN) < 4 
        THEN '0' + CAST(LastFourSSN AS VARCHAR(3)) 
        ELSE CAST(LastFourSSN AS VARCHAR(4)) 
    END LastFourSSN 
FROM #t

答案 4 :(得分:0)

如果要在列中转换值以供在应用程序中使用,可以使用以下命令-

SELECT CAST(your_column AS VARCHAR(100))
--VARCHAR length based on your data

但是,如果您要直接查找数据库列的更改数据类型,则可以尝试以下操作-

ALTER TABLE TableName 
ALTER COLUMN your_column VARCHAR(200) NULL
--NULL or NOT NULL based on the data already stored in database