Inquiridor
Odernar campo criptografado

Pergunta
-
Boa tarde a todos,
Tenho um banco criptografado usando uma criptografia que trabalho com a tabela asc, add 128 ou retiro 128.
Todos os meus campos são do tipo texto.
Estou precisando ordenar um campo que na verdade é numerio para poder exibir os dados na ordem correta, como posso fazer isto?
pois se uso o order by no campo ele coloca em uma ordenação maluca.
teria como ordernar baseado na tabela ascii?
Todas as Respostas
-
-
este campo e um numero armazenado em um campo char ou varchar ? da para converter para numeric tente
select ... from ... order by convert(numeric(10),campo)
veja se isso, caso nao seja pode explicar melhor como vc. precisa, nao entendi direito
Obrigado
-
esta como char...
tentei fazer isso, porem ele dis que não é possivel converter para numerico o caracter em questão.
como eu posso descriptografa para ordernar???
olhem como fica minha os dados:
TABELA ASCII:
Caracter | ASCII
0|48
1|49
2|50
3|51
4|52
5|53
6|54
7|55
8|56
9|57
Criptografado:
Caracter | ASCII
°|176
±|177
²|178
³|179
´|180
µ|181
¶|182
·|183
¸|184
¹|185
Criptografado e ordenado pela primeira coluna:
Caracter | ASCII
´ 180
¸ 184
± 177
° 176
µ 181
¶ 182
· 183
¹ 185
² 178
³ 179 -
Charles,
Criei essa function pra você:
Code SnippetCREATE FUNCTION dbo.fnDescriptografa128 (@v varchar (100))
RETURNS varchar (100)
AS
BEGIN
DECLARE @novo varchar (100)
DECLARE @c int
SELECT @c = 1, @novo = ''
IF len (@v) = 0
RETURN ''
WHILE @c <= len (@v)
SELECT @novo = @novo + char ( ascii (substring (@v, @c, @c + 1)) - 128), @c = @c + 1
RETURN @novo
ENDPara usar ela, basta usar sobre o campo desejado, exemplo:
Code SnippetSELECT dbo.fnDescriptografa128 (Senha) FROM tblUsuarios
Espero que ajude.
Abraço
-
-
Charles,
Agora sim:
Code SnippetCREATE FUNCTION dbo.fnDescriptografa128 (@v varchar (100))
RETURNS varchar (100)
WITH ENCRYPTION
AS
BEGIN
DECLARE @novo varchar (100)
DECLARE @c int
SELECT @c = 1, @novo = ''
IF len (@v) = 0
RETURN ''
WHILE @c <= len (@v)
SELECT @novo = @novo + char ( ascii (substring (@v, @c, @c + 1)) - 128), @c = @c + 1
RETURN @novo
ENDDesta forma, depois de criada a function, ninguém poderá ver o conteúdo dela!!
Abraço
-
Hum, interessante...
Vou tentar utiliza-la aki...
Agora estava reparando no seu codigo tem uma função ascii... ela é do proprio SQL?
Será que eu não poderia usar ela no meu order by?
assim ele ordenaria de acordo com o codigo ascii... teria como? -
Charles,
Sim... realmente, bem pensado. Só que ela retorna o ASCII de um caracter. Teria que passar o primeiro caracter apenas pra ela. Além disso, a ordenação será baseada nesse primeiro caracter. Enquanto que a minha função vai retornar a palavra inteira.
Abraço