关于ASCII()函数

 例如:  
          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'大'))

--------

 大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值