首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql ord和ascii

基础概念

ORD()ASCII() 是 MySQL 中用于处理字符和数字之间转换的函数。

  • ORD() 函数返回字符串第一个字符的 ASCII 码值。如果字符串包含多字节字符(如 UTF-8 编码的字符),则返回该字符的 Unicode 码点。
  • ASCII() 函数返回一个字符的 ASCII 码值。它只接受单个字符作为参数。

相关优势

  • ORD() 的优势在于它可以处理多字节字符,适用于国际化应用。
  • ASCII() 的优势在于它简单直接,适用于处理纯 ASCII 字符集的字符串。

类型

这两个函数都属于 MySQL 的字符串处理函数。

应用场景

  • ORD() 常用于需要处理多字节字符的场景,例如国际化应用中的字符编码转换。
  • ASCII() 常用于需要处理纯 ASCII 字符的场景,例如简单的字符比较或转换。

示例代码

代码语言:txt
复制
-- 使用 ORD() 函数
SELECT ORD('A'); -- 返回 65
SELECT ORD('中'); -- 返回 20013(UTF-8 编码下的 Unicode 码点)

-- 使用 ASCII() 函数
SELECT ASCII('A'); -- 返回 65
SELECT ASCII('中'); -- 返回 NULL(因为 '中' 不是单个 ASCII 字符)

遇到的问题及解决方法

问题:为什么 ORD() 返回的值和预期不一样?

原因:可能是由于字符编码不一致导致的。例如,如果数据库字符集是 UTF-8,而输入的字符是 GBK 编码,可能会导致返回的值不正确。

解决方法

  1. 确保数据库和输入数据的字符集一致。
  2. 使用 CONVERT() 函数进行字符集转换。
代码语言:txt
复制
SELECT ORD(CONVERT('中' USING utf8mb4)); -- 确保字符集一致

问题:为什么 ASCII() 返回 NULL?

原因ASCII() 函数只接受单个字符作为参数,如果传入的字符串长度大于 1,或者包含多字节字符,就会返回 NULL。

解决方法

  1. 确保传入的参数是单个字符。
  2. 使用 SUBSTRING() 函数提取单个字符。
代码语言:txt
复制
SELECT ASCII(SUBSTRING('中', 1, 1)); -- 提取单个字符

参考链接

希望这些信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 最全ASCii 码表说明

    A的ASCII码是65,a的ASCII码是97。...ASCII码表中,小写字母排在大写字母的后面,一个字母的大小写数值相差32,一般知道大写字母的ASCII码数值,其对应的小写字母的ASCII码数值就算出来了,是大写字母的ASCII码数值+32。...扩展资料 在ASCII码中,0~31及127(共33个)是控制字符或通信专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等。...ASCII值为8、9、10 13 分别转换为退格、制表、换行回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。...同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。 所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验偶校验两种。

    4.6K10

    ASCII,UnicodeUTF-8

    一、ASCII码 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有01两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。...二、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。...这里就有两个严重的问题,第一个问题是,如何才能区别 Unicode ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?...因此对于英语字母,UTF-8 编码 ASCII 码是相同的。 2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。...,Unicode UTF-8

    1.2K130

    ASCII、 Unicode UTF8

    ASCII: 英文字母与数字编号的一一对应。每个英文字母对应一个编号。范围0~127 Unicode: 全世界所有语言中字符与数字编号的一一对应。也即为存在的每个字符指定一个唯一的编号。...以上是ASCIIUnicode的相同点。那么,二者有什么区别? 一个显著的区别是,对于同一段文本,二者保存到文件后占用的字节数不同。对于ASCII,每个数字编号占用一个字节。...因此对于同一段文本:'abcd',采用ASCII格式保存时,文件的大小为4个字节。 采用Unicode保存时,文件的大小则为12个字节。...对于相同的文本:'abcd',Unicode需要12个字节,而UTF8只需要4个字节(ASCII一样,达到最优)。 UTF8之所以可以用一个字节存储英文字母,是因此它使用了变长的编码方式。...ASCIIUnicode都是为一个字符指定一个唯一的数字编号,Unicode能够表达更多的字符,相当于是ASCII的扩展。

    1.3K20

    1.3.1-SQL注入-SQL盲注-布尔盲注

    SQL盲注-布尔盲注 01布尔盲注原理 $id=$_GET['id']; $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1 "; $result=mysql_query...($sql); $row=mysql_fetch_array($result); if($row) { echo "Right"; } else { echo "Wrong"; } 代码存在...SQL注入漏洞 然而页面即不会回显数据,也不会回显错误信息 只返回 “Right” 与 “Wrong” 这里我们可以通过构造语句,来判断数据库信息的正确性,再通过页面的“真”“假”来识别我们的判断是否正确...(substr((select database()),1,1))=98 ascii() substr(a,b,c)从b位置开始,截取字符串a到c长度,ascii()将某个字符转换为asciiord...() ord(mid((select user()),1,1))=114 mid() mid(a,b,c)从位置b开始,截取a字符串的c位ord()函数痛ascii(),将字符串转为asciiMySql

    57140

    字符编码笔记:ASCII,UnicodeUTF-8

    于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化语言的字符则全部重新统一编码...计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别存储各种文字。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。...2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。...这里就有两个严重的问题,第一个问题是,如何才能区别UnicodeASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?...因此对于英语字母,UTF-8编码ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。

    1.9K10

    字符编码笔记:ASCII,UnicodeUTF-8

    ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有01两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。...这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)。...2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。...这里就有两个严重的问题,第一个问题是,如何才能区别UnicodeASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?...因此对于英语字母,UTF-8编码ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。

    86810

    字符编码笔记:ASCII,Unicode UTF-8

    ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。...这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制 01000001)。...2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。 比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。...这里就有两个严重的问题,第一个问题是,如何才能区别unicode ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?...因此对于英语字母,UTF-8编码ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。

    1.3K50
    领券