① sqlServer怎么获得生成的newid的值
在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会 取随机整数。那就看下面的两种随机取整数的方法:
A:select floor(rand()*N) ---生成的数是这样的:12.0
B:select cast( floor(rand()*N) as int) ---生成的数是这样的:12
A:select ceiling(rand() * N) ---生成的数是这样的:12.0
B:select cast(ceiling(rand() * N) as int) ---生成的数是这样的:12
大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:
方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数
方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数
对于这个区别,看SQL的联机帮助就知了:
② 在SQL Server数学函数中,获取0~1之间的随机值的函数是什么
MSSQLSERVER如要获取0~1之间的随机数可以使用下列表达式:
Floor(2* Rand())
例如每次运行下列SQL语句,将随机返回0或1
selectFloor(2*Rand());
请注意MSSQL的SQL语言,每次运行select,不论检索出多少行,随机函数rand都将返回相同的随机数。
另外,需要返回某个指定范围的随机整数请参考下列公式:
Floor((upperbound - lowerbound + 1) * Rand() + lowerbound)
参数说明:
upperbound 为正整数上限
lowerbound 为正整数下限
Rand()为系统随机函数
Floor()为系统函数,返回小于或等于所给数字表达式的最大整数。
有不同需要时,照套上述公式就可以了。
③ SqlServer函数的数学函数
trunc(45.923,1) 按指定精度截断十进制数 结果:45.9 此为oracle函数
mod(1600,300) 求除法余数 结果:100
abs(numeric_expr) 求绝对值
ceiling(numeric_expr) 取大于等于指定值的最小整数
avg(numeric_expr)取平均数
exp(float_expr) 取指数
floor(numeric_expr) 小于等于指定值得最大整数
pi() 3.1415926.........
power(numeric_expr,power) 返回power次方
rand([int_expr]) 随机数产生器
round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入
sign(int_expr) 根据正数,0,负数,,返回+1,0,-1
sqrt(float_expr) 平方根
④ 关于java写入SQLSERVER数据库的一个超奇怪的问题
我觉得吧, 你应该在创建新用户之前,用System.out.println(user.get****)去检测一下,servlet从页面上收集的信息和实际输入的一不一样。加在UserDAO = new UserDAO(); 这一句之前就可以, 为了保险起见,把用户所有的信息都用system.out.println()输出一遍。
如果显示出的密码和你输入的是一致的话,那么问题就是出在数据库上。你用的是hibernate么?还是用sql语句往数据库添加信息?如果是sql语句的话,就看看是不是添加用户的sql语句中的password拼写对不对,如果是hibernate的话,就看看那个xml配置文件里的password拼写和属性设置的对不对。
⑤ SQL语言随机生成字符串的几种方法
1.利用newid()产生的uniqueidentifier都是随机且唯一的:declare @string nvarchar(100);set @string =cast(newid() as nvarchar(100));select @string;go2.利用rand()生成随机数字串:declare @string nvarchar(100);set @string = right(str(rand(),8,6),2);select @string;go3.利用rand()生成6位随机字符串:declare @sql nvarchar(400) select @sql= 'select char( '+cONVERT(NVARCHAR,CONVERT(INT,26*rand())+97)+ ')+ CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+ CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+ CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+ CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+ CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ') ' print @sql EXEC(@sql) goDECLARE @Below int DECLARE @Up int SELECT @Below=65,@Up=90 SELECT CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) +CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) +CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) +CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) +CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) +CHAR(CAST(RAND()*(@Up-@Below)+@Below AS decimal(38,0))) goSELECT CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+ CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+ CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+ CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+ CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+ CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END)) go4.编写可以产生随机字符串的存储过程:--*********************CREATE VIEW V_RAND AS SELECT RAND1 = CONVERT(INT,RAND()*26),RAND2 = RAND()*2 GO CREATE FUNCTION DBO.f_GetRandNum(@LEN INT,@FLAG INT) RETURNS NVARCHAR(100) AS --@LEN 输出字符的长度 --@FLAG 返回值包含字符 1:大写字母 2:小写字母 3:大小写字母混合 BEGIN DECLARE @SQL NVARCHAR(100),@RAND INT SELECT @SQL = ' ' IF @LEN>100 SET @LEN = 100 WHILE @LEN>0 BEGIN SELECT @RAND = RAND1 +(CASE @FLAG WHEN 1 THEN 65 WHEN 2 THEN 97 ELSE(CASE WHEN RAND2 > 1 THEN 97 ELSE 65 END) END) FROM V_RAND SELECT @SQL=@SQL + CHAR(@RAND),@LEN = @LEN - 1 END RETURN @SQL END GO --调用存储过程 SELECT DBO.f_GetRandNum(7,2) (收集自:CSDN社区)
⑥ 如何向SQLSERVER中进行update一组随机数
这个还真不好做,因为sqlserver在0.5秒内,用同一种子,随机函数会取到同一个数,
可能的话在表中新加一列,然后,列识成标志列,全填上数字。
然后用update 表名set 要改的列名=round (( 刚生成的列转成字符,+ 秒数转字符, 加时间转字符)转换成数字)
这样一个近拟的效果,
⑦ sql 自定义函数返回0~100的随机整数
SQL使用函数rand()产生随机数,返回0~100的随机整数使用下面的语句:
select cast(floor(rand() * 101) as int)
生成0至100之间任一整数
⑧ sqlserver创建函数 用表名+年月日+4位随机数作为主键如何建立
SELECT (表名+getdate()+cast(rand() * (1000) AS int)) as value from t_table
sqlserver 应该有一个timestamp类型 那个是秒后面6位。。。 用那个其实就可以了
⑨ sqlserver查询结果中增加和一个随机序列怎么做
select abs(checksum(newID())%100000) as No,Name from sysobjects where xtype='U'
⑩ sqlserver 中rand()是产生随机数,为什么还要设置种子
随机函数rand可以认为是一个函数,只不过输出的值看起来是随机的罢了。对任何一个函数都需要输入初始值x,对不同的初始值x对应不同的y,如一般C语言中采用rand(time(0))就是把当前时间作为初始值输入,由于当前时间每次都不一样,所以产生的随机数每次也不一样。sqlserver中rand()应该也是一个道理,一些不设置种子也可以的,是因为函数有默认种子。