如何在 TSQL 中生成类似 RNGCryptoServiceProvider 的数字 [英] How to generate a RNGCryptoServiceProvider-like number in TSQL

查看:34
本文介绍了如何在 TSQL 中生成类似 RNGCryptoServiceProvider 的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有谁知道一种无需注册任何 .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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆