Pracuję nad projektem, w którym inny programista utworzył tabelę z nazwami kolumn, takimi jak 'Business Name'
. To jest odstęp między dwoma słowami. Jeśli uruchomię SELECT
wyciąg z „Business Name”, oznacza to, że nie ma kolumny z nazwą „Business”.
Jak mogę rozwiązać ten problem?
Odpowiedzi:
Generalnie pierwszym krokiem jest, aby tego nie robić, ale jeśli to już zostało zrobione, musisz uciec się do poprawnego cytowania nazw kolumn:
SELECT `Business Name` FROM annoying_table
Zwykle tego rodzaju rzeczy są tworzone przez ludzi, którzy używali czegoś takiego jak Microsoft Access i zawsze używają GUI do robienia swoich rzeczy.
źródło
'
, podwójne"
i odwrócone`
. W MySQL pierwsze dwa są równoważne i mogą być używane zamiennie. Nie zawsze ma to miejsce na innych platformach, a Postgres w szczególności traktuje je inaczej. Backticks są używane tylko do ucieczki nazwy bazy danych lub kolumny.Jeśli podwójne cudzysłowy nie działają, spróbuj umieścić ciąg w nawiasach kwadratowych.
Na przykład:
SELECT "Business Name","Other Name" FROM your_Table
można zmienić jako
SELECT [Business Name],[Other Name] FROM your_Table
źródło
Zamiast pojedynczych cudzysłowów musisz użyć znaku wstecznego:
Pojedynczy cudzysłów -
'Business Name'
- ŹleBacktick -
`Business Name`
- Dobrzeźródło
Dla każdego własnego, ale właściwym sposobem kodowania jest zmiana nazw kolumn poprzez wstawienie podkreślenia, aby nie było luk. Zapewni to zero błędów podczas kodowania. Podczas drukowania nazw kolumn do publicznego wyświetlania możesz wyszukać i zamienić, aby zastąpić podkreślenie spacją.
źródło
Dostałem się tutaj z problemem MS Access.
Backticks są dobre dla MySQL, ale powodują dziwne błędy, takie jak „Invalid Query Name: Query1” w MS Access, tylko dla MS Access, użyj nawiasów kwadratowych:
To powinno wyglądać tak
SELECT Customer.[Customer ID], Customer.[Full Name] ...
źródło
Myślę, że podwójne cudzysłowy też działają:
SELECT "Business Name","Other Name" FROM your_Table
Ale testowałem tylko na SQL Server, a NIE mySQL na wypadek, gdyby ktoś pracował z MS SQL Server.
źródło