如何在 TSQL 中生成类似 RNGCryptoServiceProvider 的数字 [英] How to generate a RNGCryptoServiceProvider-like number in TSQL
问题描述
有谁知道一种无需注册任何 .NET 程序集即可在 T-SQL 中生成类似 RNGCryptoServiceProvider 的随机数的方法吗?
Does anyone know of a way to generate a RNGCryptoServiceProvider-like random number in T-SQL without having to register any .NET Assemblies?
推荐答案
SELECT CHECKSUM(NEWID())
为您提供基于 GUID 的 32 个有符号整数.您可以以此为基础:这几乎是最好的 SQL 方式
SELECT CHECKSUM(NEWID())
gives you a 32 signed integer based on GUIDs. You can use this as base: it's pretty much the best SQL way
您可以使用它来播种 RAND(因为 RAND 对于单个选择中的所有行都是相同的.
You can use it to seed RAND (because RAND is the same for all rows in a single select.
SELECT RAND(CHECKSUM(NEWID()))
一个有符号的 64 位整数:
A signed 64 bit integer:
SELECT CAST(CHECKSUM(NEWID()) as bigint) * CAST(CHECKSUM(NEWID()) as bigint)
通过一些播放,您可以转换和/或连接以获得 binary("multiples of 4") 等来构建一个字节数组...虽然我没有使用过 RAND 的东西直接模拟
With some playing around you could cast and/or concatenate to get binary("multiples of 4") etc to build up a byte array... I've not used the RAND thingy though to emulate directly
这篇关于如何在 TSQL 中生成类似 RNGCryptoServiceProvider 的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!