Как преобразовать или привести int к строке в SQL Server - PullRequest
0 голосов
/ 08 мая 2019

Глядя на столбец, который содержит последние 4 чьего-либо SSN, и столбец был изначально создан как тип данных int.Теперь SSN, начинающиеся с 0, регистрируются как 0 в базе данных.

Как я могу преобразовать столбец и его информацию из int в строку для будущего использования?

Ответы [ 5 ]

1 голос
/ 08 мая 2019

Если вам конкретно нужны числа с нулем, то самое простое решение - 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'));
1 голос
/ 08 мая 2019

Вы должны конвертировать. CONVERT(VARCHAR(4), your_col)

0 голосов
/ 08 мая 2019

Если вы ищете для преобразования значений в столбце для вашей цели для использования в приложении, вы можете использовать это следующее-

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
0 голосов
/ 08 мая 2019

Во-первых, никогда не храните 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
0 голосов
/ 08 мая 2019

Если вы хотите добавить начальные нули, используйте:

SELECT RIGHT('0000'+ISNULL(SSN,''),4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...