나는 SQL 서버 2012 작업을 다음과 같이 정의 필드와 테이블이 오전 :T-SQL HASHBYTES 기능과 정렬
NVARCHAR (32)
하지만이
그 안에 저장해야NVARCHAR (1024)
가치와 나는 변경할 수 없습니다입니다 열의 길이
이 필드를 채우는 절차가 있습니다. 동시에 그러한 가치가있는 분야가 있다면 그것은 "무언가를 할 것이며, 그러한 가치가있는 분야가 있다면"아무것도하지 않을 것 "입니다.
내가 다음과 같이 HashBytes 기능을 사용하기로 결정했습니다 길이로이 문제를 해결하려면DECLARE @HashThis nvarchar(1024);
SELECT @HashThis = CONVERT(nvarchar(1024),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @HashThis);
GO
나는 당신의 데이터베이스 데이터 정렬에 따라하면 당신은 같은 값에 대해 서로 다른 해시 수익을 가질 수있는 읽었습니다. 그래서, 데이터베이스 정렬에 의존하지 않기 위해 함수에 대해서만 데이터 정렬을 지정하는 방법이 있습니까?
또한 내 아이디어에 문제가 있습니까?
질문이 이해가 가지 않습니다. 더 긴 데이터 유형을 사용할 때의 문제점은 무엇입니까? 해결책이 아닌 문제를 보여주는 코드를 게시 할 수 있습니까? – Pondlife
"a"테이블에 nvarchar (32) 테이블이 있습니다. 어쨌든 더 많은 공간이 필요한 데이터를 저장해야하며 테이블을 변경할 수 없습니다. 이 데이터는 연민을 위해서만 사용되므로 해시를 결정했습니다. 해시 될 때, 그것은 작지만, 전에 내가 이런 짓을했기 때문에 어떤 문제에 직면 할 수 있는지 알고 싶습니다. – gotqn
나는 해쉬가하는 일에 대해 혼란스러워 할 수 있다고 생각한다. 데이터를 압축하지 않기 때문에 원래 값을 다시 얻으려면 해시를 '되돌릴'방법이 없다. 위키 피 디아에는 해시와 그 용도에 대한 [좋은 개요] (http://en.wikipedia.org/wiki/Hash_function)가 있습니다. 여기에 접근 방식을 재고해야한다고 생각합니다. 현재 수행중인 작업이 완전히 명확하지는 않지만 1024자를 32 자로 맞추는 방법은 없습니다. – Pondlife