-
未公开的SQLServer口令的加密函数
如果对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢? 其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。 让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下 DECLARE @ClearPWD varchar(255) DECLARE @EncryptedPWD varbinary(255) SELECT @ClearPWD = 'test' SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD)) SELECT&nbs...
数据库操作教程 2022-09-23 20:38:14 -
sqlserverreplace函数批量替换数据库中指定字段内指定字符串参考方法
语法REPLACE('string_expression1','string_expression2','string_expression3')参数说明'string_expression1'待搜索的字符串表达式。string_expression1可以是字符数据或二进制数据...
数据库操作教程 2022-09-23 20:33:52 -
SQL语句一个简单的字符串分割函数
复制代码代码如下:CREATEFUNCTIONdbo.f_splitstr(@strvarchar(8000))RETURNS@rTABLE(idintIDENTITY(1,1),valuevarchar(5000))ASBEGIN/*Functionbody*/DECLARE@posintSET@pos=CHARINDEX(',',@str)WHILE@pos>0BEGININSERT@r(value)VALUES(LEFT(@str,@pos-1))SELECT@str=STUFF(@str,1,@pos,''),@pos=CHARINDEX(',',@str)ENDIF@str>''INSERT@r(value)VALUES(@str)RETURNENDselect*fromf_splitstr('中,国,人')...
数据库操作教程 2022-09-23 20:32:53 -
SQL集合函数中casewhenthen使用技巧
那么在集合函数中它有什么用呢 ?假设数据库有一张表名为student的表。如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数怎么写SQL语句?即要生成下结果表答案是:selectsex,count(caseprovincewhen'广东省'then'广东省'end)as广东省,count(caseprovincewhen'江西省'then'江西省'end)as江西省,count(caseprovincewhen'浙江省'then'浙江省'end)as浙江省fromstudentgroupbysexcount()函数即根据给定的范围和groupby(统计方式)而统计行数据的条数我们一步步来理解上面语句1. selectsex fromstudent(查询数据表中的存在的男女条数)2.selectsex,count(*)asnumfromstudentgroupbysex (查询表中男女数量)3.selectsex,province,count(*)asnumfromstudentgroupbysex,province(查询各...
数据库操作教程 2022-09-23 20:32:47 -
SQLserver使用自定义函数以及游标
编号标准宗地编码(landCode)所在区段编码(sectCode)1131001BG001G0012131001BG002G0013131001BG003G0014131001BG004G0025131001BG005G003现在需要将表中的数据转换为如下表所示结果:编号区段编码包含的标准宗地1G001131001BG001,131001BG002,131001BG0032G002131001BG0043G003131001BG005在SQLserver数据库中,创建自定义函数...
数据库操作教程 2022-09-23 20:30:43 -
MSSQLSERVER2005数学函数整理
MSSQLSERVER2005数学函数1.求绝对值ABS()selectFWeight-50,ABS(FWeight-50),ABS(-5.38)fromT_Person2.求幂POWER(X,Y)用来计算X的Y次幂selectFWeight,POWER(FWeight,-0.5),POWER(FWeight,2),POWER(FWeight,3),POWER(FWeight,4)fromT_PersonselectPower(2,2)3.求平方根SQRT()selectFWeight,SQRT(FWeight)fromT_Person4.求随机数RAND()支持有参数,也可以没参数selectRAND()selectRAND(123)5.舍入到最大整数CEILING()selectFName,FWeight,CEILING(FWeight),CEILING(FWeight*-1)fromT_Person6.舍入到最小整数FLOOR()selectFName,FWeight,FLOOR(FWeight),FLOOR(FWeight*-1)fromT_Person7.四舍五入ROUND(...
数据库操作教程 2022-09-23 20:29:52 -
sql自定义百分比转换小数函数代码
复制代码代码如下:--CAST和CONVERT函数PercentageDECLARE@decdecimal(5,3),@varvarchar(10),@hundecimal(5,1)set@dec=0.025set@hun=@dec*100set@var=cast(@hunasvarchar(20))+'%'select@var---小数转化为百分数函数GetPercentageString---涂聚文GeovinDuifexists(select*fromdbo...
数据库操作教程 2022-09-23 20:26:28 -
sqlserverCase函数应用介绍
--简单Case函数CASEsex WHEN'1'THEN'男' WHEN'2'THEN'女'ELSE'其他'END--Case搜索函数CASEWHENsex='1'THEN'男' WHENsex='2'THEN'女'ELSE'其他'END这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式...
数据库操作教程 2022-09-23 20:26:14 -
SQL里类似SPLIT的分割字符串函数
一,用临时表作为数组复制代码代码如下:createfunctionf_split(@cvarchar(2000),@splitvarchar(2))returns@ttable(colvarchar(20))asbeginwhile(charindex(@split,@c)<>0)begininsert@t(col)values(substring(@c,1,charindex(@split,@c)-1))set@c=stuff(@c,1,charindex(@split,@c),'')endinsert@t(col)values(@c)returnendgoselect*fromdbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')dropfunctionf_splitcol--------------------dfkddfdkdfdfdkfdffjk(所影响的行数为4行)二、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。复制代码代码如下:CREATEfunctionG...
数据库操作教程 2022-09-23 20:26:11 -
SQL学习笔记四聚合函数、排序方法
聚合函数count,max,min,avg,sum...selectcount(*)fromT_EmployeeselectMax(FSalary)fromT_Employee排序ASC升序DESC降序select*fromT_EmployeeorderbyFage先按年龄降序排列。如果年龄相同,则按薪水升序排列select*fromT_EmployeeorderbyFAgeDESC,FSalaryASCorderby要放在where子句之后通配符过滤通配符过滤用like单字符通配符‘_'多字符通配符‘%'select*fromT_EmployeewhereFNamelike'_erry'NULL是不知道的意思,而不是没有用SQL语句查询NULL的数据不能用=或<>而用isNULL或者isnotNULLselect*fromT_EmployeewhereFNameisNULLin(23,25)同时匹配两个值...
数据库操作教程 2022-09-23 20:26:10 -
sql查询本年、本月、本日记录的语句,附SQL日期函数
查询本日记录SELECT*FROMmessagesWHERECONVERT(Nvarchar,CreateDate,111)=CONVERT(Nvarchar,GETDATE(),111) ORDERBYCreateDateDESCSELECT*FROM表WHEREdatediff(day,列名,getdate())=0 查询本年SELECTcount(*)FROMmessagesWHEREdatediff(year,CreateDate,getdate())=0查询本月SELECTcount(*)FROMmessagesWHEREdatediff(month,CreateDate,getdate())=0本周记录SELECT*FROM表名WHEREdatediff(week,列名,getdate())=0SQL日期函数1. 当前系统日期、时间 selectgetdate() 2.dateadd 在向指定日期加上一段时间的基础上,返回新的dat...
数据库操作教程 2022-09-23 20:25:40