MySQL first_value в столбце varchar возвращает записи в неправильном формате - PullRequest
0 голосов
/ 03 июня 2019

Функция first_value в MySQL возвращает столбец varchar в неожиданном формате.

Я получил таблицу 'test' с двумя столбцами

create table test (col1 varchar(10), col2 integer);

и имеет такие записи,

enter image description here

когда я запускаю функцию first_value, я получаю такие записи

select *, first_value(col1) over(partition by col1 order by col2 desc) as max_col1 
from test;

enter image description here

это потому, что first_value работает только для числовых полей?

1 Ответ

2 голосов
/ 03 июня 2019

это потому, что first_value работает только для числовых полей?

Нет, first_value() работает также для типа данных varchar.Полученные результаты верны, но в шестнадцатеричном формате!0x6B657931 это key10x6B657932 это key20x6B657933 это key3Таким образом, это может быть проблема сопоставления или проблема с программным обеспечением, которое вы используете.Если вы используете сайт, похожий на скрипку, то не удивительно, что результаты приходят такими, какие они есть.В любом случае, вы можете найти больше здесь: https://dev.mysql.com/doc/refman/8.0/en/charset-syntax.html
Если проблема не устранена, вы всегда можете использовать функцию unhex():

select unhex('6B657931')

вернет:

key1

Или:

select CAST(0x6B657931 AS CHAR)

также вернет:

key1

См. Демоверсию .

...