2011-11-02 15 views
9

Baza danych, której używa moja aplikacja, zawiera nazwy pól zawierające spacje. Wierzę, że to jest przyczyną mojego problemu. Oto typowe zapytanie:Błąd składni zapytania SQL - spacje w nazwach pól

SELECT * FROM 'OV2 BAS' AS bas 
INNER JOIN 'OV2 RefID' AS ids ON 'bas.Ref ID' = 'ids.Ref ID' 
WHERE ids.ENUM_H = 'TDischarge'; 

Jak radzić sobie ze spacjami w nazwach pól? Dzięki.

Dodatkowe informacje

to, aby uzyskać dostęp do bazy danych MS Access wykonaną z 2007 (Microsoft.ACE.OLEDB.12.0).

+1

Z jakiego RDBMS korzystasz? –

+0

To jest dostęp do bazy danych wykonanej z MS Access 2007 (Microsoft.ACE.OLEDB.12.0). –

Odpowiedz

12

Nie sądzę, aby można było użyć cytatów wokół rzeczywistej nazwy tabeli; tylko nazwa, którą mu przypisujesz. Zamiast tego zamieniłabym tabelę w nawiasach: [OV2 BAS]

Nie można również wstawiać cytatów dotyczących składni połączenia. Zamiast tego spróbuj tego:

SELECT * FROM [OV2 BAS] AS bas INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID] WHERE ids.ENUM_H = 'TDischarge'; 
9

wymienić ' z

  • PostGreSQL Oracle: "
  • MySQL `
  • SQL serwera: [ i ]

Na przykład "OV2 BAS", bas."Ref ID" = ids."Ref ID" itp

+0

+1 jako ograniczające nazwy tablic i kolumn razem wydają się błędne. Chociaż zgaduję, że są one raczej zwrotami niż cytatami opartymi na ograniczniku użytym w pytaniu. –

1

To zależy od używanego silnika bazy danych.
Dla SQL Server, trzeba umieścić nazwy pól w nawiasach: [ ]

SELECT * FROM [OV2 BAS] AS bas 
INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID] 
WHERE ids.ENUM_H = 'TDischarge'; 
+0

Ma to na celu uzyskanie dostępu do bazy danych utworzonej za pomocą programu MS Access 2007 (Microsoft.ACE.OLEDB.12.0). –

1

Nie określić DBMS używasz, ale zgaduję serwera SQL, więc

SELECT * 
FROM [OV2 BAS] AS bas 
    ^^^^^^^^^ 

... wpisz nazwę pola w nawiasach. Posługując się cudzysłowami takimi, jakie jesteś, zmienia nazwę pola na zwykły ciąg znaków, który NIE będzie traktowany jako nazwa pola przez serwer SQL.

+0

To jest dostęp do bazy danych wykonanej przy użyciu MS Access 2007 (Microsoft.ACE.OLEDB.12.0). –

+0

Ok. Wsporniki też tam będą działać. Zastanów się nad zmianą nazw pól, aby nie było w nich spacji, jeśli możesz - rozmieszczone nazwy spowodują ból w dół drogi (jak teraz znajdujesz). –

+0

Będziesz również musiał zanotować nazwy pól w klauzuli JOIN, a także - cytując nazwy pól zamienia je w ciągi i nie będą traktowane jako nazwy pól. '... ON bas. [Ref ID] = ids. [Ref ID]' –

0

Dla programu Microsoft Access zawij nazwy pól zawierające spacje z wstecznymi znacznikami, np. SELECT `Eng Units` Z tabeli

Powiązane problemy