函数随手练_1
--
--在整理以前搜集的函数时,顺便活动了一下手指练习了下面的一些基础性的东西
select power(0,2) as [2^0] select power(1,2) as [2^1] select power(2,2) as [2^2] select power(2,10) as [2^10] select power(2,5) as [2^5] select power(5,3) as [5^3] declare @value int, @counter int set @value =2 set @counter =1 while @counter < 5 begin select power(@value,@counter) set nocount on set @counter = @counter + 1 set nocount off end ------------------------------------ --下例假定在 ASCII 字符集环境下运行,它将返回字符串"Du Monde entier"中每一个字符的 ASCII 值和 char 字符 SET TEXTSIZE 0 SET NOCOUNT ON declare @position int,@string char(15) set @position = 1 set @string = 'Du monde entier' while @position <= datalength(@string) begin --SELECT ascii(substring(@string, @position, 1)), char(ascii(substring(@string,@position,1))) SELECT ASCII(SUBSTRING(@string, @position, 1)) AS ASCII, CHAR(ASCII(SUBSTRING(@string, @position, 1))) AS Char set @position = @position + 1 end SET NOCOUNT OFF ------------------------------------ --1.00 ~ 10.00数字的平方根 declare @myvalue float = 1.00 while @myvalue <= 10 begin select sqrt(@myvalue) set @myvalue = @myvalue + 1 end ------------------------------------ --下例产生 4 个通过 RAND 函数产生的不同的随机值 declare @counter smallint = 1 while @counter < 5 begin select rand(@counter) as Random_Number SET NOCOUNT ON set @counter = @counter +1 SET NOCOUNT OFF end ------------------------------------ select REPLICATE('A',3)
-----------------------------------------------------------------------------------------------------------------------------------------
SET NOCOUNT :使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
语法 : SET NOCOUNT { ON | OFF }
注释 : 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。
当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft SQL Server 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、 UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
权限 :SET NOCOUNT 权限默认授予所有用户。
结论:我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。
-----------------------------------------------------------------------------------------------------------------------------------------
Len(): LEN 函数返回文本字段中值的长度(汉字和中文标点为长度1,不包含trailing space)。
用法: SELECT LEN(column_name)
DataLength(): 函数返回用于表示任何表达式的字节数(汉字和中文标点为长度2,包含trailing space)。
用法: SELECT DataLENGTH(column_name)
用例:
DECLARE @d VARCHAR(20),--可变长度,非 Unicode 字符数据。
@e NCHAR(20),--n 个字符的固定长度的 Unicode 字符数据。
@f CHAR(20)--固定长度,非 Unicode 字符数据,长度为 n 个字节。
SET @d = 'abc'
SET @e = 'abc'
SET @f = 'abc'
SELECT LEN(@d) AS [LEN],DATALENGTH(@d) AS [DATALENGTH] --3,3
SELECT LEN(@e) AS [LEN],DATALENGTH(@e) AS [DATALENGTH] --3,40
SELECT LEN(@f) AS [LEN],DATALENGTH(@f) AS [DATALENGTH] --3,20
汉字和中文标点个数:SELECT DataLENGTH(column_name) - LEN(column_name)