varchar 列上的 MySQL first_value 返回格式错误的记录
Posted
技术标签:
【中文标题】varchar 列上的 MySQL first_value 返回格式错误的记录【英文标题】:MySQL first_value on varchar column returns records in wrong format 【发布时间】:2019-06-03 04:22:43 【问题描述】:mysql 中的 first_value 函数以意外格式返回 varchar 列。
我有一个包含两列的表“测试”
create table test (col1 varchar(10), col2 integer);
并且有这样的记录,
当我运行 first_value 函数时,我会得到这样的记录
select *, first_value(col1) over(partition by col1 order by col2 desc) as max_col1
from test;
这是因为 first_value 仅适用于数字字段吗?
【问题讨论】:
mysqltutorial.org/mysql-window-functions/… 请不要粘贴代码(或示例数据)的屏幕截图而不提供与文本相同的内容。它使人们很难重建您的环境。请参考如何create a Minimal, Complete, Verifiable example的“完整”标题。 【参考方案1】:这是因为 first_value 仅适用于数字字段吗?
不,first_value()
也适用于 varchar
数据类型。
您得到的结果是正确的,但采用 十六进制 格式!0x6B657931
是 key1
0x6B657932
是 key2
0x6B657933
是 key3
因此,这可能是整理问题或您正在使用的软件问题。
如果您使用的是类似小提琴的网站,那么结果就是这样就不足为奇了。
无论如何,你可以在这里找到更多:https://dev.mysql.com/doc/refman/8.0/en/charset-syntax.html
如果问题仍然存在,您可以随时使用unhex()
函数:
select unhex('6B657931')
将返回:
key1
或者:
select CAST(0x6B657931 AS CHAR)
也会返回:
key1
请参阅demo。
【讨论】:
我使用的是 HeidiSQL,无论如何您的回答“CAST(0x6B657931 AS CHAR)”对我有用! :)以上是关于varchar 列上的 MySQL first_value 返回格式错误的记录的主要内容,如果未能解决你的问题,请参考以下文章
VARCHAR 列上的 ISNUMERIC 仍然返回数字吗?
无法使用 SSIS 将 SQL Server varchar(max) 传输到 MySQL 文本