MySQL获取字符串中的X字节

MySQL获取字符串中的X字节,mysql,string,type-conversion,byte,Mysql,String,Type Conversion,Byte,我有一个数据库,我正试图从中提取一些数据,我们正在将一个客户从另一个客户转换为我们的系统,源数据库有一个名为line的字段,它是一个varchar 然而,该字段不只是包含文本,字符串的第一个x字节是状态代码,它们只是字节,因此作为一个示例,一行可以读取foo,当在十六进制编辑器中读取时,它是03 C2 A0 66 6F 6F 我试图在MySQL中运行一个查询,以显示第三个字节处的内容,但是我没有得到正确的结果。我怀疑MySQL将字符视为UTF-8,当我使用子字符串时,我会得到一个双字节字符 我尝

我有一个数据库,我正试图从中提取一些数据,我们正在将一个客户从另一个客户转换为我们的系统,源数据库有一个名为
line
的字段,它是一个varchar

然而,该字段不只是包含文本,字符串的第一个x字节是状态代码,它们只是字节,因此作为一个示例,一行可以读取
foo
,当在十六进制编辑器中读取时,它是
03 C2 A0 66 6F 6F

我试图在MySQL中运行一个查询,以显示第三个字节处的内容,但是我没有得到正确的结果。我怀疑MySQL将字符视为UTF-8,当我使用子字符串时,我会得到一个双字节字符

我尝试了两种方法,第一种是
HEX(ASCII(子字符串(转换(使用utf8mb4的行),3,1))
。我还尝试用“CONVERT(line,BINARY)”替换“CONVERT(line,BINARY)”,这会得到相同的结果

当我读到返回的第一个字符03时,我读到了返回的第二个字符C2,当我尝试第三个字符时,我返回的是0而不是A0

我刚刚尝试从该字段复制输出,并将其作为字符串文本,这很好,只有在从数据库读取时才可以

这很有效

HEX(ASCII(子字符串(转换('t',二进制),3,1))
——字符串是以下HEX 03C2A0中的值

这不管用

HEX(ASCII(子字符串(转换(行,二进制),1,1))
--行包含与上述示例相同的字符串

对什么有效有什么建议吗?理想情况下,我需要将其作为一个查询而不是任何后期处理

谢谢
安迪。

几天后我确实弄明白了。我确实认为我发布了我自己问题的解决方案

这就像将行数据转换为utf8mb4然后转换为二进制一样简单,这样我就可以访问行中的每个字节

HEX(ASCII(子字符串(转换(使用utf8mb4转换行,二进制),4,1))

两个都必须使用,这是我一开始没有看到的

我希望这会对将来的人有所帮助


干杯。

几天后我就想好了。我确实认为我发布了我自己问题的解决方案

这就像将行数据转换为utf8mb4然后转换为二进制一样简单,这样我就可以访问行中的每个字节

HEX(ASCII(子字符串(转换(使用utf8mb4转换行,二进制),4,1))

两个都必须使用,这是我一开始没有看到的

我希望这会对将来的人有所帮助

干杯