from
หนึ่งในคอลัมน์ของฉันถูกเรียกว่า ฉันไม่สามารถเปลี่ยนชื่อได้เพราะฉันไม่ได้ทำ ฉันได้รับอนุญาตให้ทำสิ่งที่ชอบSELECT from FROM TableName
หรือมีไวยากรณ์พิเศษเพื่อหลีกเลี่ยงการ SQL Server สับสนหรือไม่
from
หนึ่งในคอลัมน์ของฉันถูกเรียกว่า ฉันไม่สามารถเปลี่ยนชื่อได้เพราะฉันไม่ได้ทำ ฉันได้รับอนุญาตให้ทำสิ่งที่ชอบSELECT from FROM TableName
หรือมีไวยากรณ์พิเศษเพื่อหลีกเลี่ยงการ SQL Server สับสนหรือไม่
คำตอบ:
ตัดชื่อคอลัมน์ในวงเล็บอย่างนั้นfrom
กลายเป็น [จาก]
select [from] from table;
นอกจากนี้ยังเป็นไปได้ที่จะใช้สิ่งต่อไปนี้ (มีประโยชน์เมื่อทำการสอบถามหลายตาราง):
select table.[from] from table;
select TableName.from from TableName;
PS: มันทำงานใน MySQL
หากอยู่ใน PostgreSQL ให้ใช้เครื่องหมายอัญประกาศคู่ล้อมรอบชื่อเช่น:
select "from" from "table";
หมายเหตุ: ภายใน PostgreSQL จะแปลงคำสั่งและพารามิเตอร์ที่ไม่มีเครื่องหมายทั้งหมดให้เป็นตัวพิมพ์เล็กโดยอัตโนมัติ ที่มีผลกระทบที่คำสั่งและตัวบ่งชี้ไม่คำนึงถึงขนาดตัวพิมพ์ sEleCt * จาก tAblE; ถูกตีความเป็นการเลือก * จากตาราง; . อย่างไรก็ตามพารามิเตอร์ที่อยู่ในเครื่องหมายคำพูดคู่จะถูกใช้ตามที่เป็นอยู่และดังนั้นจึงคำนึงถึงขนาดตัวพิมพ์: เลือก * จาก "ตาราง"; และเลือก * จาก "ตาราง"; รับผลลัพธ์จากสองตารางที่แตกต่างกัน
ในขณะที่คุณกำลังทำ - นามแฝงว่ามันเป็นอย่างอื่น (หรือดีกว่ายังใช้มุมมองหรือ SP และเลิกใช้วิธีการเข้าถึงโดยตรงเก่า)
SELECT [from] AS TransferFrom -- Or something else more suitable
FROM TableName
นี่คือสองวิธีในการทำ:
เลือก `จาก 'จาก TableName
SELECT TableName.from FROM TableName
ดูเหมือนว่าคำถามของคุณจะได้รับคำตอบที่ดี แต่ฉันต้องการเพิ่มความคิดเห็นเพิ่มเติมในหัวข้อนี้
ผู้ออกแบบฐานข้อมูลควรตระหนักถึงคำสำคัญที่สงวนไว้และหลีกเลี่ยงการใช้คำสำคัญเหล่านั้น หากคุณค้นพบใครบางคนที่ใช้มันแจ้งให้พวกเขาเกี่ยวกับมัน (ในทางที่สุภาพ) คำหลักที่นี่เป็นคำที่สงวนไว้
ข้อมูลมากกว่านี้:
"ไม่ควรใช้คำหลักที่สำรองไว้เป็นชื่อวัตถุฐานข้อมูลที่ปรับรุ่นจาก SQL Server รุ่นก่อนหน้าอาจมีตัวระบุที่มีคำที่ไม่ได้จองไว้ในรุ่นก่อนหน้า แต่เป็นคำที่สงวนไว้สำหรับ SQL Server รุ่นปัจจุบันคุณสามารถอ้างถึง วัตถุโดยใช้ตัวระบุที่มีการคั่นจนกว่าชื่อสามารถเปลี่ยนแปลงได้ " http://msdn.microsoft.com/en-us/library/ms176027.aspx
และ
"ถ้าฐานข้อมูลของคุณมีชื่อที่ตรงกับคำสำคัญที่สงวนไว้คุณต้องใช้ตัวระบุที่คั่นด้วยเมื่อคุณอ้างถึงวัตถุเหล่านั้นสำหรับข้อมูลเพิ่มเติมดูตัวระบุ (DMX)" http://msdn.microsoft.com/en-us/library/ms132178.aspx
หากคุณใช้ SQL Server คุณสามารถตัดวงเล็บเหลี่ยมรอบชื่อคอลัมน์หรือตารางได้
select [select]
from [table]
ใน Apache Drill ให้ใช้ backquotes:
select `from` from table;
ฉันยังต้องเผชิญกับปัญหานี้ และวิธีแก้ปัญหานี้คือการใส่ [Column_Name] เช่นนี้ไว้ในแบบสอบถาม
string query= "Select [Name],[Email] from Person";
ดังนั้นมันจะทำงานได้อย่างสมบูรณ์แบบดี
สวัสดีฉันทำงานกับระบบ Teradata ที่สอดคล้องกับ ANSI อย่างสมบูรณ์ ใช้เครื่องหมายคำพูดคู่ "" เพื่อตั้งชื่อคอลัมน์ดังกล่าว
เช่นtype
เป็นคำหลักที่สงวนไว้ของ SQL และเมื่อใช้ภายในเครื่องหมายคำพูดtype
จะถือว่าเป็นชื่อที่ผู้ใช้ระบุ
ดูตัวอย่างโค้ดด้านล่าง:
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
คุณสามารถใส่ชื่อคอลัมน์ของคุณในวงเล็บเช่น:
Select [from] from < ur_tablename>
หรือ
ใส่ในตาราง temprary จากนั้นใช้เท่าที่คุณต้องการ
ตัวอย่าง:
Declare @temp_table table(temp_from varchar(max))
Insert into @temp_table
Select * from your_tablename
ที่นี่ฉันแค่คิดว่า your_tablename มีเพียงหนึ่งคอลัมน์ (เช่นจาก)
[from]
เป็นคอลัมน์เดียวที่your_tablename
ได้รับ
"[Total]"
? หรืออาจจะมีวิธีที่จะหลบหนีมันเป็น[\[Total\]]
อย่างไร
ฉันวิ่งเข้าไปในปัญหาเดียวกันเมื่อพยายามที่จะปรับปรุงคอลัมน์ที่ชื่อเป็นคำหลัก การแก้ปัญหาข้างต้นไม่ได้ช่วยฉัน ฉันแก้ไขมันโดยเพียงแค่ระบุชื่อของตารางดังนี้:
UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')
ต่อไปนี้จะทำงานได้อย่างสมบูรณ์แบบ:
SELECT DISTINCT table.from AS a FROM table
ใน MySQL หรือใช้ back quote (`) คุณสามารถใช้ UI เพื่อเปลี่ยนชื่อคอลัมน์ คลิกขวาที่ตาราง> แก้ไขตาราง> แก้ไขชื่อคอลัมน์ที่มีคำหลัก sql> กระทำ
select [from] from <table>
ตามหมายเหตุข้างต้นไม่ทำงานใน MySQL
ตัดสินจากคำตอบที่นี่และประสบการณ์ของฉันเอง คำตอบเดียวที่ยอมรับได้หากคุณวางแผนที่จะพกพาไม่ได้ใช้คำหลัก SQL สำหรับตารางคอลัมน์หรือชื่ออื่น
คำตอบทั้งหมดเหล่านี้ทำงานในฐานข้อมูลต่าง ๆ แต่เห็นได้ชัดว่าไม่สนับสนุน ANSI มากนัก
SELECT "from" FROM TableName
นั่นก็คือทำดีและพกพา!