2015-06-18 4 views
-2

Я пытаюсь вернуть числовое представление строки, чтобы я мог декодировать и возвращать исходную строку.SQL Server: конвертировать varchar в int и обратно

ie. Преобразование «тест», чтобы что-то вроде 12345

Тогда будучи в состоянии принять 12345 и получить «тест»

имеет смысл?

+0

Это значит быть жестко закодированным отображением или получено из формулы? –

+2

Нет, это не имеет смысла –

+0

Мне это действительно нужно как номер – pforpaul

ответ

0

Вы хотите что-то вроде этого:

DECLARE @OriginalString VARCHAR(100)= 'test' 

DECLARE @EncryptedString INT 
SET @EncryptedString = REPLACE(@OriginalString,@OriginalString,12345) 

DECLARE @DecryptedString VARCHAR(100) 
SET @DecryptedString = REPLACE(@EncryptedString,@EncryptedString,@OriginalString) 

SELECT 'DECRYPTED STRING: ' + @DecryptedString 
+0

Ну, мне нужно получить «тест» из int. – pforpaul

1

Вы можете зашифровать и расшифровать ваши колонки с помощью ENCRYPTBYPASSPHRASE и DECRYPTBYPHASSPHRASE соответственно. Но при шифровании и расшифровке сообщений вы должны использовать одну и ту же фассфразу.

DECLARE @TestString INT = 1234 
DECLARE @Encrpted varbinary(8000) 

SET @Encrpted = ENCRYPTBYPASSPHRASE('YourEncrptPhrase',CAST(@testString AS VARCHAR(100))) 

SELECT @Encrpted AS EncrptedMessage, 
    CAST(DECRYPTBYPASSPHRASE('YourEncrptPhrase',@Encrpted) AS VARCHAR(100)) AS DecryptedMessage 

Если вы хотите иметь общее имя себя, то либо вам нужно создать кодовое имя для каждого значения или присвоить алфавит каждому целому числу (0-9) Ex .: A = 1, B = 2. Затем вы можете использовать функцию REPLACE для замены целого на алфавит. Но почему вы хотите это сделать ???

+0

Это близко, но мне нужно @TestString быть фактической строкой - то есть. 'testing123' – pforpaul

+0

@pforpaul Я отредактировал свой ответ. В идеале нет такой встроенной функциональности, доступной в SQL Server, IMO. Для этого вам нужно создать свою собственную функцию или логику. –

Смежные вопросы