关于ASCII()函数

来源:互联网 发布:航天科工 知乎 编辑:程序博客网 时间:2024/06/12 00:40

 例如:  
          SELECT   ASCII(123)   as'123',ASC('123')   as   '"123"',ASCII('abc')as   '"abc"'  
  的返回值是   49   49   97  
  该函数返回的是字符表达式最左端字符的ASCII代码值  
  问题点:  
          1。ASCII(123)   的最左端是“1”,应该返回的是“1”呀,为什么是"49"?  
          2。ASCII('123')   的最左端是“'”,为什么是"49"?  
          3。ASCII('abc,)   的最左端是“'”,为什么是"97"?

 

 

ASCII  
  返回字符表达式最左端字符的   ASCII   代码值。  
   
   
  ASCII(123)     因为ASCII处理字符串,所以123转换成字符串,1的ASCII是49  
   
  后面的就不用说了,'是字符串的定界符,所以不在计算范围内

 

汉字的ascii码:

取高位的8位运算后除以256  
   
  移位操作不一定要用移位运算来做,可以利用除法,右移8位相当于除以256  
   
  比如"烫"字的高8位为204,低八位为204  
   
  declare   @bytes   binary(2)  
  set   @bytes=convert(binary,'烫')  
   
  --低8位的10进制值  
  print   0x00FF   &   cast(@bytes   as   int)  
  --高8位的10进制值  
  print   (0xFF00   &   cast(@bytes   as   int))/256  
   
  --结果  
  204  
  204  
   
  测试  
  select   char(204)+char(204)  
   
  --结果  
             
  ----    
  烫  

 

declare   @bytes   binary(2)  
  set   @bytes=convert(binary,'安')  
   
  --低8位  
  print   0x00FF   &   cast(@bytes   as   int)  
  --高8位  
  print   (0xFF00   &   cast(@bytes   as   int))/256  
   
  --结果  
  178  
  176  
   
  select   char(176)+char(178)  
   
  --结果  
  ----    
  安   
   

 

select   unicode(N'大')

-----

22823

 

select   Nchar(unicode(N'大'))

--------

 大

原创粉丝点击