SQL Server 2005를 사용하는 asp.net 응용 프로그램이 있습니다.이 응용 프로그램에서는 새 조회 ID에 대해 고유 한 참조 번호를 반환하는 함수를 만들려고합니다.SQL Server 2005에서 고유 한 참조 번호를 생성하는 함수
UNIQUEIDTITIER에 대해 읽었지 만 1548C3E02-2D73-4244-8787-D45AC590519A와 같은 특정 형식이 있습니다.
1703-HJIF-2012와 같은 출력이 필요합니다. 여기에는 먼저 날짜와 달과 같은 현재 datepart의 조합이 있고, 두 번째는 자동 생성되는 임의의 문자열이며 세 번째 것은 현재 날짜의 연도 부분입니다. 그런 함수를 어떻게 만들 수 있는지, 어떻게 저장 프로 시저에서이 함수를 호출하여이 필요한 형식의 함수에서 결과 문자열을 얻는지를 알지 못합니다. 여기
몇 가지 중 하나
나에게이 기능을 게시하지만,이 공백 대신 0 생성create function UniqueRefNum (@r1 float, @r2 float, @r3 float, @r4 float)
returns char(14)
begin
-- Not sure if rand() might return 1.0
-- If it does, the conversion code below would produce a character that's not an
-- uppercase letter so let's avoid it just in case
if @r1 = 1.0 set @r1 = 0
if @r2 = 1.0 set @r2 = 0
if @r3 = 1.0 set @r3 = 0
if @r4 = 1.0 set @r4 = 0
declare @now datetime
set @now = getdate() -- or getutcdate()
declare @m char(2)
if month(@now) < 10
set @m = '0' + month(@now)
else
set @m = month(@now)
declare @d char(2)
if day(@now) < 10
set @d = '0' + day(@now)
else
set @d = day(@now)
return @m + @d + '-' +
char(65 + cast(@r1 * 26 as int)) +
char(65 + cast(@r2 * 26 as int)) +
char(65 + cast(@r3 * 26 as int)) +
char(65 + cast(@r4 * 26 as int)) +
'-' + cast(year(@now) as varchar)
end
당신은 다음과 같은 저장 프로 시저에서 함수를 호출 :
declare @uniqueRef char(14)
set @uniqueRef = dbo.UniqueRefNum(rand(), rand(), rand(), rand())
을 ---- ----------- 업데이트 -----------------------------
출력을 생성합니다. 그것 같습니다 :
4 24-HHBH-2014
와 나는 같은 출력 뭔가 원하는 : 당신은 문자열을 연결하기 전에 숯불하는 일/월 값을 캐스팅 할 필요가
2404-HHBH-2014
DDMM-XXXX-YYYY
고유 한 기능을 어떻게 계획하고 계십니까? 100 % 무작위이므로 2 개의 값을 생성해도 충돌 위험이 있습니다. –
고유 한 ref 문자열을 생성합니다. –
@ShalinGajjar 현재 및 예상 출력을 게시 할 수 있습니까? BTW는 응용 프로그램 계층에서이 작업이 더 쉽지 않을까요? – TomT