函数随手练_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(@dAS [LEN],DATALENGTH(@dAS [DATALENGTH] --3,3
SELECT LEN(@eAS [LEN],DATALENGTH(@eAS [DATALENGTH] --3,40
SELECT LEN(@fAS [LEN],DATALENGTH(@fAS [DATALENGTH] --3,20

汉字和中文标点个数:SELECT DataLENGTH(column_name) - LEN(column_name)

 

posted @ 2020-05-24 15:50  CDPJ  阅读(250)  评论(0编辑  收藏  举报