Oracle 난수

2883 단어 Oracle난수
Oacle 을 이용 한 dbmsrandom 패 키 지 는 rownum 과 결합 하여 이 루어 집 니 다.예 를 들 어 다음 과 같 습 니 다.무 작위 로 499 가구:select*from(select*from busi.tar_userinfo order by dbms_random.value) where rownum < 500; 관련 dbmsrandom 의 참고 문헌 은 다음 과 같다.http://www.psoug.org/reference/dbms_random.html Deprecated. Use the methods in the DBMS_CRYPTO built-in package,이 가방 은 첨부 된 dbms 를 사용 하 는 것 을 권장 하지 않 습 니 다.random 의 몇 가지 매개 변수 에 대한 소개:function value return number,0,1 사이 의 임 의 수 를 되 돌려 줍 니 다.정밀도 38 비트(Gets a random number,greater than or equal to 0 and less than 1,with decimal 38 digits)function value(low IN NUMVER,high IN NUMBER)return number,[low,high)간 의 난수 function normal return number,return random numbers in a standard normal distribution 은 정상 분포 에 복종 하 는 그룹 수 를 되 돌려 주 고 표준 편차 가 1 이 며 기대 치 는 0 이 며 반환 치 중 68%는+1 과-1 사이 에 있 고 95%는+2 와-2 사이 에 있 으 며 99%는+3 과-3 사이 에 있다.function random return BINARY_INTEGER,(Generate Random Numeric Values),function string(opt char,length Number)return varchar 2(the maximum is 60),지정 한 길이 의 문자열(Create Random Strings),opt seed values:'a','A'&n 질문:제 업무 중의 질문:주관 자 는 저 에 게 특정한 활동 을 위해 조건 에 부합 되 는 EMAIL 이나 핸드폰 번호 사용 자 를 무 작위 로 꺼 내 수상 통지 나 다른 소식 을 주 라 고 했 습 니 다.저희 회사 가 사용 하 는 Oracle 9i 는 어떻게 실현 합 니까?답:Oacle 에서 난수 의 PL/SQL 을 생 성 할 수 있 습 니 다.디 렉 터 리 파일 이름 은:/ORACLE 입 니 다.HOME/rdbms/admin/dbmsrand.sql。 사용 하기 전에 sys 사용자 아래 에서 컴 파일 해 야 합 니 다:SQL>@/ORACLEHOME/rdbms/admin/dbmsrand.sql 은 실제 sys 사용자 아래 dbms 를 생 성 합 니 다.random 패 키 지 는 공유 동의 어 를 생 성하 고 모든 데이터베이스 사용자 에 게 실행 권한 을 부여 합 니 다.dbms 사용random 패키지,무 작위 데 이 터 를 꺼 내 는 방법:1.유일 하 게 증가 하 는 시리 얼 번호 tmp 를 만 듭 니 다.id   create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache; 2.그리고 임시 표 tmp 만 들 기1.이번 활동 조건 에 맞 는 기록 을 모두 꺼 냅 니 다.  create table tmp_1 as select tmp_id.nextval as id,email,mobileno from 테이블 이름 where 조건;최대 id 번호 찾기:select max(id)from tmp1; 5000 3 이 라 고 가정 합 니 다.무 작위 수 를 생 성 하 는 피 드 execute dbmsrandom.seed(12345678); 혹은 execute dbmsrandom.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS')); 4.난수 생 성 함수 dbms 호출random.value 임시 표 생 성 tmp2 무 작위 로 200 개 create table tmp2 as select trunc(dbms_random.value(1,5000)) as id from tmp_1 where rownum<201; [설명:dbmsrandom.value(1,5000)는 1 에서 5000 사이 의 무 작위 수 를 추출 하 는 것 으로 소수 가 있 습 니 다.trunc 함수 가 무 작위 숫자 를 추출 해 야 임시 표 의 정수 ID 필드 와 대응 할 수 있 습 니 다.주의:만약 tmp1.기록 이 비교적 많 고(10 만 개 이상),약 200 줄 이상 의 시 계 를 찾 을 수 있 습 니 다(만약 tmp3)tmp 생 성2   create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_3 where rownum<201; ]   5. tmp_1 과 tmp2 관련 조건 에 맞 는 200 사용자 select t1.mobileno,t1.email from tmp1 t1,tmp_2 t2 where t1.id=t2.id; [주의:만약 tmp1.기록 이 많 습 니 다(10 만 개 이상).id 필드 에 색인 을 만들어 야 합 니 다.]텍스트 파일 로 출력 할 수 있 습 니 다:set pagesize 300;  spool /tmp/200.txt;   select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id order by t1.mobileno;   spool off; 6.사용 후 임시 테이블 삭제 tmp1、tmp_2 와 시퀀스 번호 tmpid。

좋은 웹페이지 즐겨찾기