เหตุใดสี“ การค้นหา” จึงเป็นคำที่สงวนไว้ของฟังก์ชันใน SQL Server


14

ใน SSMS 2208 ตัวระบุ "ค้นหา" เป็นสีชมพูร้อนราวกับว่ามันเป็นฟังก์ชั่น (สีเดียวกับที่พูดว่า "พลังงาน" หรือ "แปลง") ทำไม?

ฉันไม่สามารถหาได้ในรายการอย่างเป็นทางการของคำสงวน การค้นหาบนเว็บดูเหมือนไร้ประโยชน์เพราะมีคำศัพท์ "ค้นหา" ที่น่ากลัวมากมายซึ่งไม่เกี่ยวข้องกับคำถามของฉัน


1
สิ่งที่ฉันคิดได้ก็คือฟังก์ชั่นค้นหา SSRS () ( msdn.microsoft.com/en-us/library/ee210531.aspx ) คำถามที่ดี. +1
Thomas Stringer

@Shark หาดี แต่ผมคาดว่าฟังก์ชั่นอื่น ๆ ที่มีการปฏิบัติตามกฎระเบียบที่คล้ายกัน แต่พวกเขาไม่ได้เน้นใน SSMS เช่นCOUNTDISTINCT, COUNTROWSและRUNNINGVALUEควรจะทำงานในลักษณะเดียวกัน
Aaron Bertrand

คำตอบ:


14

ตอนแรกฉันคิดว่ามันมาจาก Sybase (ซึ่งเป็นที่มาของ SQL Server แน่นอน) ซึ่งมีฟังก์ชั่นการค้นหาแต่นี่เกี่ยวข้องกับ PowerBuilder และจากนั้นฉันตรวจสอบ SQL Server 2000 และมันไม่สว่างเป็นสีชมพูใน Query Analyzer ...

ป้อนคำอธิบายรูปภาพที่นี่

... ถ้ามันเป็นมรดกจาก Sybase ฉันคงจะคาดหวังว่ามันจะอยู่ในรายการของคำที่เป็นรหัสสีมาตลอด เป็นไปได้ว่าฉันคิดว่าไฟล์ไวยากรณ์ได้รับการปรับปรุงและถูกละเว้น "โดยไม่ได้ตั้งใจ" ในปี 2000 แต่ฉันสงสัย มีความเป็นไปได้มากกว่าที่จะมีการระบายสีเนื่องจากมีการระบุไว้ใน T-SQL Language Service เป็นคำที่ใช้งานร่วมกันได้ในอนาคต (ฉันกำลังรอการยืนยันอย่างเป็นทางการเกี่ยวกับเรื่องนี้และฉันจะแบ่งปันสิ่งที่ฉันสามารถทำได้)

ตัวอย่างความสนุกอื่น ๆ ( ฉันบ่นเกี่ยวกับบางอย่างใน Connect back ในปี 2008แต่มันถูกปิดเนื่องจากไม่แก้ไข) ของการเน้นคำที่ไม่เหมาะสมซึ่งไม่ได้อยู่ในรายการที่คุณอ้างถึง:

  • Domains สว่างเป็นสีเขียว
  • Description สว่างเป็นสีน้ำเงิน
  • Server สว่างเป็นสีน้ำเงิน
  • Instead สว่างเป็นสีน้ำเงิน
  • RC2และRC4สว่างเป็นสีน้ำเงิน

ป้อนคำอธิบายรูปภาพที่นี่

ในขณะที่ฉันไม่ได้จับภาพLookupหรือInsteadตัวอย่างและฉันแน่ใจว่ามีบางคนเช่นกัน แม้ว่าฉันเดาว่าเอกสารที่คุณกำลังดูอยู่นั้นไม่ทันสมัยเท่าที่ควร อย่างน้อยที่สุดINSTEADควรอยู่ในรายการนั้นเนื่องจากเป็นส่วนหนึ่งของ T-SQL ในขณะนี้ (ตั้งแต่มีการเปิดใช้ทริกเกอร์ INSTEAD OF) ฉันเดิมพันว่ามีคำหลักอื่น ๆ อย่างน้อย 20 คำที่เพิ่มเข้ามาสำหรับ SQL Server 2012 แต่ไม่ได้อยู่ในรายการนั้นเช่นกัน ได้อย่างรวดเร็วสแกนมีบางยกเว้นเรื่องน่าทึ่งที่ควรจะมี: OFFSET, IIF, FORMATฯลฯ

อีกตัวอย่างหนึ่งที่คุณอาจพบว่าน่าสนใจ; ลองวางคำเหมือนINSTEADในสตริง แต่อยู่ในบรรทัดของตัวเอง สิ่งนี้ทำงานได้ดี แต่ดูเหมือนจะไม่:

SELECT 'foo 
INSTEAD
';

ป้อนคำอธิบายรูปภาพที่นี่

( ข้อผิดพลาดนี้เกิดจากข้อบกพร่องที่ยื่นโดย @JonSeigel )

ฉันอาจจะยื่นและแสดงความคิดเห็นในข้อบกพร่องสองสามโหลต่อการเน้นไวยากรณ์ของ Management Studio ; แน่นอนมันไม่สมบูรณ์แบบ ฉันขอขอบคุณที่คุณต้องการทราบว่าทำไมแต่เราไม่อาจทราบได้ในท้ายที่สุด ดังที่คุณเห็นจากรายการเชื่อมต่อเหล่านี้มากมายพวกเขามักจะเพิกเฉย / เลื่อนหรือแก้ไขโดยไม่มีคำอธิบายมากมาย


2
ฉันลืมสิ่งเหล่านั้น! ฉันวิ่งข้ามการส่งการเชื่อมต่อของคุณสักครู่
ErikE

โดยวิธีการที่ "แทน" INSTEAD OF UPDATEชนิดของทำให้รู้สึกตั้งแต่ทริกเกอร์สามารถ แต่ไม่ใช่คำที่สงวนไว้ ...
ErikE

@ErikE ฉันเน้น "แทน" เพราะเป็นคำหลักไม่อยู่ในรายการ (มีหลักฐานอีกอันที่บ่งบอกว่าล้าสมัยไปแล้ว)
Aaron Bertrand

"ไซต์" ได้รับการเน้นด้วยสีน้ำเงินและไม่ได้อยู่ในรายการคำหลักที่สงวนไว้
Simon D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.