계정이라는 테이블에 데이터를 삽입하고 필드 중 하나에 11부터 시작하여 길이가 9 자리 (예 : 112345673 또는 119876543) 인 임의의 숫자가 필요합니다. SQL 또는 PHP에서이 작업을 수행해야합니다.행을 삽입하는 동안 난수 생성
답변
당신은 한 번에 하나 개의 행을 삽입하는 경우 ...
--INSERT dbo.table(column1, random_column)
SELECT 'column1_value',
'11' + RIGHT(REPLACE(CONVERT(VARCHAR(12), RAND()), '.', ''), 3)
+ RIGHT(REPLACE(CONVERT(VARCHAR(12), RAND()), '.', ''), 4);
이 다중 행 SELECT의 일부인 경우, 각 행에 할당 같은 번호를 볼 수 있습니다, 그래서 당신이 필요할 것 각 행의 다른 데이터를 기반으로 랜덤 화 (또는 Conrad가 지적한대로 NEWID()
사용). 예
--INSERT dbo.table(column1, random_column)
SELECT name, '11' + RIGHT(1000000 + ABS(CONVERT(BIGINT,
CONVERT(VARBINARY(16), NEWID()))), 7)
FROM sys.all_objects;
는 (나는
INSERT
그래서 당신이 독립적으로 결과를 테스트 할 수 있습니다 주석했습니다.) 이것은 당신에게 11 자리 임의의 숫자를 줄 것이다
[newID에 기초한] (http://sqlfiddle.com/#!3/d41d8/1522) 랜덤 화를 시도했지만, 당신이 알고 있다고 확신합니다. –
@ConradFrix 예, 이미 'NEWID()'와 함께 또 다른 대답이있었습니다. 약간 다른 접근 방식을 제공합니다. –
나는 이것이 11 자리 숫자를 반환 할 것이라고 기대하지는 않았지만 점이 디지털 구분 기호 인 경우 +1 – Andomar
가능하지만 성능은 좋지 않습니다. 이 시도.
insert into table2(randomNumberColumn)
select convert(bigint,'11' + convert(varchar(100),convert(bigint,right(convert(varchar(100),abs(convert(int,convert(varbinary(16),newid())))),7)))) as a
from table1
한 가지 문제는 11 자리 길이를 보장하지 않는다는 것입니다. 때로는 숫자가 작아서 10이됩니다. 난수 생성기가 작은 숫자로 나타날 때 추가 0을 채우는 방법을 실제로 살펴 보지 않았습니다.
PHP를 사용하십시오.
$randnum = "11".rand(1000000, 9999999);
. 경우에 임의의 숫자는보다 짧은 9 자리 숫자가 제로로 시작되는, 그래서 전체 길이는 항상 11 :
select '11' + right('11000000000' +
cast(abs(convert(bigint,convert(varbinary(8),newid()))) as varchar(20)), 9)
실제로 11 자리 숫자로 연결됩니다 (OP는 9를 원합니다). :-) –
+1 내 문제도 해결할 수 있습니다! – Zhenny
어쩌면이 지나치게 단순하지만 110000000 + (ABS(CHECKSUM(NEWID())) % 10000000)
무엇을 생산하는 매우 가볍고 방법이 될 것입니다 당신 필요.
ALTER TABLE mySchema.myTable ADD CONSTRAINT DF_myColumn
DEFAULT 110000000 + (ABS(CHECKSUM(NEWID())) % 10000000) FOR myColumn
+1 조금 더 똑똑함 –
내가 시도 할 것 : 빨리 증명 중
SELECT '11'+RIGHT(STR(RAND(),9,7),7)
SELECT '11'+REPLACE(STR(RAND(),9,7),'0.','')
... 또는이 약간의 변화를 ... ....
RAND()는 소수점 이하 자리가 충분하지 않기 때문에 항상이 솔루션을 사용하여 9 자리를 제공 할 수 없습니다. –
@AaronBertrand 이것은 STRING이 RAND가 짧으면 다음 예제처럼 STRING이 후미 0을 제공하기 때문에 문제가되지 않습니다 :'SELECT '11'+ RIGHT (STR (0.25,9,7), 7)', 112500000' –
- 1. 난수 생성
- 2. 난수 생성
- 3. 난수 생성
- 4. java : 루프에서 난수 생성
- 5. ARM7의 난수 생성 - C
- 6. Cauchy에서 난수 생성
- 7. 중복이없는 난수 생성
- 8. CUDA 난수 생성
- 9. 고정 길이의 난수 생성
- 10. 커널 모듈에서 난수 생성
- 11. 난수 생성/알고리즘은 무엇입니까?
- 12. C#의 난수 생성
- 13. 범위를 제외한 난수 생성
- 14. JavaScript에서 문자열의 난수 생성
- 15. 확률 분포로 난수 생성
- 16. 난수 생성 방법
- 17. 난수 생성 및 캡슐화
- 18. jqtpl에서 난수 생성
- 19. 비 균일 난수 생성
- 20. C printf 난수 생성
- 21. 효과적으로 난수 생성
- 22. vdm ++에서 난수 생성
- 23. doSMP로 난수 생성
- 24. 분포에 따라 난수 생성
- 25. 난수 생성 속도
- 26. N 자리의 난수 생성
- 27. 평가 점수에 난수 생성
- 28. UUID 난수 생성
- 29. CakePHP에서 난수 생성?
- 30. 자바에서 난수 생성
* 고유 * 난수가 필요합니까? 아니면 임의의 난수가 필요합니까? – gcbenison