Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- di
- Excel
- 구글
- MSSQL
- Generic
- SQL
- It
- jQuery
- JavaScript
- asp.net mvc
- 디자인패턴
- IT관련
- cookie
- 제네릭
- angularJS
- ADO.NET
- iframe
- XML
- 동적dom
- mvc
- 클래스
- IT 관련
- ASP.NET
- csv
- 메소드
- delegate
- c#
- LINQ
- Today
- 444
- Total
- 1,439,385
심재운 블로그
MS SQL 의 숫자 4자리 + 대문자 2자리 + 숫자 3자리 = 총 9자리 난수 만들기 본문
MS SQL 의 숫자 4자리 + 대문자 2자리 + 숫자 3자리 = 총 9자리 난수 만들기
view
CREATE VIEW [dbo].[View_RandomNumber]
AS
SELECT RAND() AS RANDOMNUMBER
GO
function
CREATE FUNCTION [dbo].[ufn_RandBetween](@BOTTOM INT, @TOP INT)
RETURNS INT
AS
BEGIN
RETURN (SELECT CAST(ROUND((@TOP-@BOTTOM)* RANDOMNUMBER + @BOTTOM,0) AS INTEGER)
FROM View_RandomNumber)
END
GO
총 9자리로 구성되어 있으며, 실행하면 "6263QB802" 이며, 앞에 숫자 4자리 + 대문자 2자리 + 숫자 3자리 = 총 9자리
CREATE FUNCTION [dbo].[ufn_GenerateRandom]()
returns VARCHAR(10)
AS
BEGIN
DECLARE @randInt INT;
DECLARE @NewCharacter VARCHAR(1);
DECLARE @NewPassword VARCHAR(10);
SET @NewPassword='';
--## start of 숫자 4자리
WHILE ( Len(@NewPassword) < 4 )
BEGIN
SELECT @randInt = dbo.ufn_RandBetween(48, 122)
-- 0-9 < = > ? @ A-Z [ \ ] a-z
IF @randInt <= 57
BEGIN
SELECT @NewCharacter = Char(@randInt)
SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
END
END
--## end of 숫자 4자리
--Ensure a lowercase
--SELECT @NewCharacter = Char(dbo.Randbetween(97, 122))
--SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
--Ensure an upper case
--## start of 대문자 2자리
SELECT @NewCharacter = Char(dbo.ufn_RandBetween(65, 90))
SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
SELECT @NewCharacter = Char(dbo.ufn_RandBetween(65, 90))
SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
--## end of 대문자 2자리
-- ## start of 총길이 9자리이며 나머지 자리는 숫자로 채운다.
WHILE ( Len(@NewPassword) < 9 )
BEGIN
SELECT @randInt = dbo.ufn_RandBetween(48, 122)
-- 0-9 < = > ? @ A-Z [ \ ] a-z
IF @randInt <= 57
BEGIN
SELECT @NewCharacter = Char(@randInt)
SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
END
END
-- ## end of 총길이 9자리이며 나머지 자리는 숫자로 채운다.
--Ensure a number
--SELECT @NewCharacter = Char(dbo.ufn_RandBetween(48, 57))
--SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
----Ensure a symbol
--WHILE ( Len(@NewPassword) < 10 )
-- BEGIN
-- SELECT @randInt = dbo.ufn_RandBetween(33, 64)
-- -- ! # $ % & < = > ? @
-- IF @randInt = 33
-- OR ( @randInt >= 35
-- AND @randInt <= 38 )
-- OR ( @randInt >= 60
-- AND @randInt <= 64 )
-- BEGIN
-- SELECT @NewCharacter = Char(@randInt)
-- SELECT @NewPassword = Concat(@NewPassword, @NewCharacter)
-- END
-- END
RETURN( @NewPassword );
END;
GO
실행해 보기
SET @PrizeNumber = 'K' + (SELECT dbo.ufn_GenerateRandom())
참고사이트
http://www.sqler.com/index.php?mid=bColumn&page=6&document_srl=900494
SQL 사용자 Tip과 강좌 - 랜덤 캐릭터 생성하기
SQLER의 사용자들이 만들어가는 SQL서버 사용자 Tip & 강좌 게시판입니다. SQL서버 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다. 랜덤 캐릭터 생성하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 무작위로 패스워드를 생성해야 하거나 쿠폰번호 등을 생성해야 할 때 일정한 범위내에서 랜덤한 문자열을 생성하는 코드를 만들어 본다. 랜덤한 문자
www.sqler.com
'데이터베이스 > MS-SQL' 카테고리의 다른 글
MSSQL 의 spt_values 활용으로 특정 시작일과 종료일 사이 추출 (0) | 2019.11.14 |
---|---|
MSSQL Calendar 달력 관련 테이블 스키마 (0) | 2019.11.14 |
MS SQL 의 숫자 4자리 + 대문자 2자리 + 숫자 3자리 = 총 9자리 난수 만들기 (0) | 2019.10.25 |
mssql 의 money 와 decimal 그리고 float 의 차이점 (0) | 2019.10.04 |
mssql 의 rand() 와 newid() 조합으로 난수 생성하기 (0) | 2019.10.01 |
mssql 로 날짜 사이 기간 일자들 출력해 보기 (0) | 2019.05.23 |
0 Comments