Текст SQL в скобках пытается запустить функцию - PullRequest
0 голосов
/ 17 ноября 2011

При выполнении следующего запроса SQL появляется сообщение об ошибке при обнаружении недопустимой функции

SELECT Name, Street FROM Persons 

Это наиболее вероятно, потому что в базе данных есть записи, такие как улица (больше)

Как сделать так, чтобы эти ошибки не появлялись?

Бест Курт

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Чтобы обойти ужасные варианты именования, используйте кавычки идентификатора MySQL (обратный тик), например,

SELECT `Name`, `Street` FROM `Persons`

См. http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

0 голосов
/ 17 ноября 2011

Ваш вопрос неверен:

То, что вы хотели спросить, было:

SELECT Name(), Street FROM Persons   

Почему MySQL видит name() как функцию?

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

() в порядке, если у вас есть пробел перед ними:

SELECT name, (a+b) as aplusb FROM t1  <<-- OK
SELECT name FROM t1 WHERE (a = 1)     <<-- OK
SELECT name(a+b) FROM t1              <<-- Incorrect, tries to run a function named `name`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...