Odpowiedzi:
Zawiń nazwę kolumny w nawiasy kwadratowe tak, from
staje się [z]
select [from] from table;
Możliwe jest również użycie następujących (przydatne przy zapytaniach do wielu tabel):
select table.[from] from table;
select TableName.from from TableName;
PS: Działa w MySQL
Jeśli był w PostgreSQL, użyj podwójnych cudzysłowów wokół nazwy, takich jak:
select "from" from "table";
Uwaga: wewnętrznie PostgreSQL automatycznie konwertuje wszystkie niecytowane polecenia i parametry na małe litery. Powoduje to, że polecenia i identyfikatory nie rozróżniają wielkości liter. WYBÓR * z tabeli; jest interpretowany jako select * z tabeli; . Jednak parametry wewnątrz podwójnych cudzysłowów są używane tak, jak są, i dlatego JEST rozróżniana wielkość liter: wybierz * z „tabeli”; i wybierz * z „Tabeli”; pobiera wynik z dwóch różnych tabel.
Są dwa sposoby, aby to zrobić:
Wybierz `from` FROM TableName
SELECT TableName.from FROM TableName
Odpowiedź na twoje pytanie wydaje się być tutaj dobrze udzielona, ale chcę dodać jeszcze jeden komentarz do tego tematu.
Osoby projektujące bazę danych powinny mieć świadomość zarezerwowanych słów kluczowych i unikać ich używania. Jeśli odkryjesz, że ktoś go używa, poinformuj go o tym (uprzejmie). Słowo kluczowe jest tutaj słowem zastrzeżonym .
Więcej informacji:
„Zastrzeżone słowa kluczowe nie powinny być używane jako nazwy obiektów. Bazy danych zaktualizowane z wcześniejszych wersji SQL Server mogą zawierać identyfikatory zawierające słowa niezarezerwowane we wcześniejszej wersji, ale są to słowa zastrzeżone dla bieżącej wersji SQL Server. sprzeciwiać się, używając identyfikatorów rozdzielanych do momentu zmiany nazwy. ” http://msdn.microsoft.com/en-us/library/ms176027.aspx
i
„Jeśli Twoja baza danych zawiera nazwy pasujące do zarezerwowanych słów kluczowych, musisz odwoływać się do tych identyfikatorów z ogranicznikami. Aby uzyskać więcej informacji, zobacz Identyfikatory (DMX).” http://msdn.microsoft.com/en-us/library/ms132178.aspx
Jeśli korzystasz z programu SQL Server, możesz po prostu owinąć nawiasy kwadratowe wokół nazwy kolumny lub tabeli.
select [select]
from [table]
Zmierzyłem się również z tym problemem. Rozwiązaniem tego jest umieszczenie w zapytaniu [nazwa_kolumny] w ten sposób.
string query= "Select [Name],[Email] from Person";
Więc będzie działać idealnie dobrze.
Cześć. Pracuję na systemach Teradata, które są całkowicie zgodne z ANSI. Użyj podwójnych cudzysłowów „”, aby nazwać takie kolumny.
Np. type
Jest słowem kluczowym zastrzeżonym SQL, a używane w cudzysłowie type
jest traktowane jako nazwa określona przez użytkownika.
Zobacz poniższy przykład kodu:
CREATE TABLE alpha1
AS
(
SEL
product1
type_of_product AS "type"
FROM beta1
) WITH DATA
PRIMARY INDEX (product1)
--type is a SQL reserved keyword
TYPE
--see? now to retrieve the column you would use:
SEL "type" FROM alpha1
Możesz umieścić nazwę kolumny w nawiasie, np .:
Select [from] from < ur_tablename>
Lub
Umieść tabelę tymczasową, a następnie używaj, jak chcesz.
Przykład:
Declare @temp_table table(temp_from varchar(max))
Insert into @temp_table
Select * from your_tablename
Tutaj zakładam, że twoja_nazwa_tablicy zawiera tylko jedną kolumnę (tj. Z).
[from]
jest to jedyna kolumna, która your_tablename
ma.
"[Total]"
? A może jest jakiś sposób na ucieczkę [\[Total\]]
?
Wystąpił ten sam problem podczas próby aktualizacji kolumny, której nazwa była słowem kluczowym . Powyższe rozwiązanie nie pomogło mi. Rozwiązałem to, podając po prostu nazwę tabeli w następujący sposób:
UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')
Następujące będą działać idealnie:
SELECT DISTINCT table.from AS a FROM table
Sądząc po odpowiedziach tutaj i moim własnym doświadczeniu. Jedyną akceptowalną odpowiedzią, jeśli planujesz być przenośny, nie używaj słów kluczowych SQL dla nazw tabel, kolumn lub innych nazw.
Wszystkie te odpowiedzi działają w różnych bazach danych, ale najwyraźniej wiele nie obsługuje rozwiązania ANSI.
SELECT "from" FROM TableName
, miło i przenośnie!