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仅适用于数字字段吗?
最佳答案
is this because first_value works only for numeric fields?
不,first_value()
也适用于 varchar
数据类型。
您得到的结果是正确的,但采用十六进制格式!
0x6B657931
是 key1
0x6B657932
是 key2
0x6B657933
是 key3
因此,这可能是排序问题或您正在使用的软件的问题。
如果您使用的是类似 fiddle 的网站,那么结果按原样出现也就不足为奇了。
无论如何,您可以在这里找到更多信息:https://dev.mysql.com/doc/refman/8.0/en/charset-syntax.html
如果问题仍然存在,您可以随时使用 unhex()
功能:
select unhex('6B657931')
将返回:
key1
或者:
select CAST(0x6B657931 AS CHAR)
还将返回:
key1
请参阅demo .
关于varchar 列上的 MySQL first_value 返回格式错误的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56421111/