Вопрос о результате с наличием комментария в MySql - PullRequest
0 голосов
/ 22 июня 2019

Сомневаюсь в результате с наличием комментария в MySql

Недавно у меня возникла проблема с кодом, из-за которой я получил странный результат. Через несколько минут, просто случайно, я смог найти результат. Я сделал этот простой тест, чтобы убедиться, что это не проблема с моим запросом:

select
NOW()as date_1,
'4: 33.32%' as string_1, 
--- comment,
NOW() as date_2, 
--- comment
'4: 33.32%' as string_2 

У меня есть такой результат:

enter image description here

Случайно я внес небольшое изменение в оба комментария:

select
NOW()as date_1,
'4: 33.32%' as string_1, 
--- comment,
NOW() as date_2, 
--- comment
'4: 33.32%' as string_2, 
-- - comment,
NOW() as date_3, 
-- - comment
'4: 33.32%' as string_3

С этим у меня есть правильный ответ:

enter image description here

Однако у меня есть сомнения по поводу комментариев, представленных перед второй датой и строкой. Почему третий последовательный дефис повлиял на результат и какие вычисления он заставил выполнить.

версия: 10.3.8-MariaDB

1 Ответ

1 голос
/ 22 июня 2019

Комментарий SQL начинается с --<space>.Когда вы пишете ---<space>, первое - не является частью комментария, это знак минуса перед комментарием.Таким образом, вы написали

select
NOW()as date_1,
'4: 33.32%' as string_1, 
- -- comment,
NOW() as date_2, 
- -- comment
'4: 33.32%' as string_2, 
-- - comment,
NOW() as date_3, 
-- - comment
'4: 33.32%' as string_3

И когда вы удаляете комментарии, это эквивалентно

select
NOW()as date_1,
'4: 33.32%' as string_1, 
- NOW() as date_2, 
- '4: 33.32%' as string_2, 
NOW() as date_3, 
'4: 33.32%' as string_3

Оператор - сначала преобразует свой операнд в число, поэтому датав NOW() преобразуется в число 20190621200233, а строка '4: 33.32%' преобразуется в число 4.000.Затем оператор - возвращает отрицательное значение этих чисел, поэтому в результатах вы видите -20190621200233 и -4.000.

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