关于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'大'))

--------

 大

### 数据库中ASCII函数的使用 #### Oracle数据库中的ASCII函数 在Oracle数据库环境中,`ASCII()` 函数用于获取字符串中首个字符对应的ASCII码值。此功能对于字符编码转换或是基于字符数值的操作非常实用[^1]。 ```sql SELECT ASCII('A') FROM dual; ``` 上述SQL语句会返回字母'A'的ASCII码值,即65。 #### MySQL数据库中的ORD函数ASCII函数对比 MySQL提供了两个类似的函数来处理字符到整数之间的转换——`ORD()` 和 `ASCII()` 。其中,`ASCII()` 的行为类似于其他数据库系统的同名函数;而`ORD()` 则专门针对单字节字符集设计,当输入多字节字符时只考虑第一个字节[^2]。 ```sql SELECT aut_name, ASCII(aut_name) AS 'ASCII value of 1st character' FROM authors; ``` 这段查询将展示表authors里每条记录的名字及其首字符的ASCII码值。 #### 非ASCII字符的支持情况 值得注意的是,在面对含有非标准ASCII字符的数据时(比如Unicode),某些实现可能无法直接给出预期的结果。因此,在涉及国际化应用开发时应格外小心验证所使用的具体版本和支持程度[^3]。 #### GBase 8s环境下的ASCII函数特性 特定于GBase 8s平台上的`ASCII()` 实现接受多种字符类型作为参数,包括但不限于CHAR、VARCHAR以及支持宽字符集的NCHAR/NVARCHAR等,并依据传入的第一个有效字符计算相应的ASCII码点[^4]。 ```sql SELECT ASCII(N'你好') FROM DUAL; -- 返回中文“你”的UTF-8编码下对应的一个字节数值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值