我想要將數據插入到名爲accounts的表中,並且其中一個字段必須有一個隨機數,從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
這樣你就可以進行獨立測試結果。)
你也可以隨機[基於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);
然後,只需插入查詢,瞧。
這將會給你一個11位的隨機數。如果隨機數少於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'+REPLACE(STR(RAND(),9,7),'0.','')
...或者這個微小的變化...
SELECT '11'+RIGHT(STR(RAND(),9,7),7)
...取其證明更快。
RAND()有時在小數位後沒有足夠的數字,所以你不能依靠這個解決方案來總是提供9位數字。 –
@AaronBertrand這不是問題,因爲如果RAND很短,STR將提供尾隨零,如下例所示:'SELECT'11'+ RIGHT(STR(0.25,9,7),7)',返回' 112500000' –
- 1. 使用sed在隨機數行中生成隨機數
- 2. 隨機數生成
- 3. 生成隨機數
- 4. 生成隨機數
- 5. 生成隨機數
- 6. 生成隨機數
- 7. 隨機數生成
- 8. Javascript:生成隨機數函數並插入數組
- 9. 在Laravel生成隨機數
- 10. 隨機數生成在PySpark
- 11. 在隨機生成50個隨機數中使用隨機數#
- 12. 隨機數生成機制
- 13. jQuery在隨機時間生成隨機數
- 14. 生成隨機數:計算隨機生成的x次數
- 15. 隨機數生成器幫助不生成隨機數 - C
- 16. 隨機()不生成隨機數
- 17. 從隨機長生成隨機數
- 18. 平行隨機生成
- 19. 隨機時間生成
- 20. 生成隨機數並插入文本域
- 21. 如何將隨機生成的變量插入到數組中?
- 22. 將隨機生成的數字插入到URL中
- 23. 用隨機生成的數字插入語句
- 24. 生成隨機數據進行測試
- 25. Akka期貨並行隨機數生成
- 26. 如何並行生成隨機數字?
- 27. 隨機數生成的每一行
- 28. 如何在運行時生成一個隨機數?
- 29. 生成具有隨機行長度的隨機二維數組
- 30. 僞隨機數生成
你需要一個*唯一的*隨機數,或任何隨機數嗎? – gcbenison