SQL - усеченное неверное значение DOUBLE - PullRequest
0 голосов
/ 27 марта 2019

У меня все еще есть проблема с моим запросом SQL, и я не могу решить ее самостоятельно после различных попыток и исследований.

Ошибка:

Предупреждение: # 1292 Сокращенное неверное значение DOUBLE: 'TITLE1_00'

Предупреждение: # 1292 Сокращенное неверное значение DOUBLE: 'TITLE2'

Предупреждение: # 1292 Сокращенное неверное значение DOUBLE: '_00'

Мой запрос:

SELECT t1.titleid
FROM tmdb t1
LEFT JOIN patch t2
ON t1.titleid = t2.name + '_00'
WHERE t2.name IS NULL

Состав:

tmdb: titleid(varchar)(15)

патч: name(varchar15)(15)

Я пробовал:

name(varchar)(15) было name(varchar)(9), и я изменил это на 15.

Я выполнил запрос в phpmyadmin в обеих базах данных.

Кто-нибудь знает, почему это происходит, и каково решение?


Вопрос был помечен как дубликат. Ответ в связанном посте не отвечает на мой вопрос, так как этот запрос отличается. Как уже упоминалось в этом посте, я провел исследование и уже встречал этот пост!

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

+ - это числовое сложение, а не конкатенация строк ... поэтому MySQL пытается преобразовать ваши значения в числа. Не имея лучшего плана, это относится к резервному типу DOUBLE (64-битное значение с плавающей запятой). Но поскольку ваши строки не дают очень убедительных чисел, вы получаете предупреждения.

Правильная конструкция для конкатенации строк:

ON t1.titleid = CONCAT(t2.name, '_00')
0 голосов
/ 27 марта 2019

Какой смысл в этом SQL? Не могли бы вы привести пример данных и привести то, что вам нужно?

Вы пытаетесь добавить '_00' к нулю. Разве это не ошибка в предложении где?

Пробовали ли вы использовать CONCAT (ifnull (t2.name, ''), '_ 00')?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...