এসকিউএল স্ট্যান্ডার্ড কলামের নাম এড়াতে?


100

কোনও কলামের নাম থেকে বাঁচার জন্য কি এসকিউএল স্ট্যান্ডার্ড রয়েছে? না হলে মাইএসকিউএল এবং এসকিউএলাইটের জন্য কী কাজ করে? এটি কি এসকিউএল সার্ভারের জন্যও কাজ করে?

উত্তর:


90

উদ্ধৃতি চিহ্ন "

এসকিউএল: 1999 মানক নির্দিষ্ট করে যে ডাবল উদ্ধৃতি ( ") ( উদ্ধৃতি চিহ্ন ) সীমানা শনাক্তকারী করতে ব্যবহৃত হয়।

<delimited identifier> ::= <double quote> <delimited identifier body> <double quote>

ওরাকল, পোস্টগ্রেএসকিউএল, মাইএসকিউএল, এমএসএসকিউএল এবং এসকিউলাইট "সনাক্তকারী ডিলিমেটার হিসাবে সমস্ত সমর্থন করে।

তারা সবাই "'ডিফল্ট' হিসাবে ব্যবহার করে না । উদাহরণস্বরূপ, যদি আপনি মধ্যে মাইএসকিউএল চলমান করা থাকতে হবে ANSI মোড এবং যখন SQL সার্ভার শুধুমাত্র এটি সমর্থন QUOTED_IDENTIFIERকরা হয় ON


78

এসকিউএলাইট অনুসারে ,

  • 'foo' একটি এসকিউএল স্ট্রিং
  • "foo" একটি এসকিউএল সনাক্তকারী (কলাম / টেবিল / ইত্যাদি)
  • [foo] এমএস এসকিউএলে একটি সনাক্তকারী
  • `foo` মাইএসকিউএলে একটি সনাক্তকারী

যোগ্য নামের জন্য বাক্য গঠনটি হ'ল: "t"."foo"বা [t].[foo], ইত্যাদি is

MySQL আদর্শ "foo" সমর্থন করে যখন ANSI_QUOTESবিকল্পটি সক্ষম করা হয়।


4
নোট করুন যে এসকিউএলাইটটি 'foo'সনাক্তকারী হিসাবে ব্যাখ্যা করার অনুমতি দেয় যদি প্রসঙ্গটি কোনও স্ট্রিংকে মঞ্জুরি দেয় না এবং প্রসঙ্গটি যদি সনাক্তকারীকে অনুমতি না দেয় তবে একটি স্ট্রিং "foo"হিসাবে ব্যাখ্যা করা যায়, যদিও এমন একটি নোট রয়েছে যে ভবিষ্যতে এই আচরণটি মুছে ফেলা হতে পারে সংস্করণ।
থোমাসরুটটার

সুতরাং, আপনি কীভাবে "টি" করেন? *?
লেনিক্স

4
@ থোমাসরটার হ্যাঁ আমি এই আচরণের দ্বারা সম্পূর্ণরূপে কামড় পেলাম ... ব্যবহার করার চেষ্টা WHERE "nonexistent_column" = 0করলাম এবং স্ক্লাইটতে স্রেফ খুশিতে এটিকে সম্পাদন করলাম যে ভান করে যে আমার "nonexistent_column"একটি স্ট্রিং ছিল। নামটিকে পুরোপুরিভাবে যোগ্যতার সাথে "my_table"."nonexistent_column"আরও কঠোরভাবে আচরণ করার জন্য স্ক্লাইট করে।
রাফলেউইন্ড

foo, "foo"এবং 'foo'মাইএসকিউএল নিয়ে আমার পক্ষে কাজ করে নি। এটি ব্যাকটিক্স প্রয়োজন। এবং বিষয়টিকে আরও খারাপ করার জন্য, মাইএসকিউএল অকেজো ত্রুটি বার্তা সরবরাহ করছিল ।
jww

22

মাইএসকিউএল এর জন্য, পিছনে টিক্স ব্যবহার করুন `

এই ক্ষেত্রে:

SELECT `column`, `column2` FROM `table`

20

এমএস এসকিউএল-এর জন্য [এবং] ব্যবহার করুন

SELECT [COLUMN], [COLUMN 2] FROM [TABLE]

4
আপনার এমএস স্ক্যালো! কলামের কলামে ফাঁকা স্থান থাকতে পারে!?!

4
আপনি পারেন! আমি না, যদিও।
জেএমপি

4
হ্যাঁ, এমএসএসকিউএলে সত্তার নাম হিসাবে আপনার কাছে ফাঁকা স্থান বা সংরক্ষিত শব্দ থাকতে পারে। আপনার কেবল তাদের [] দরকার।
বোল্টবাইট

6
বিটিডাব্লু, আপনি যদি এমএস এসকিউএল সার্ভারে [এবং] ব্যবহার করছেন এবং আপনি নিজের নামে (যে কোনও কারণেই) চরিত্রটি ব্যবহার করতে চান তবে আপনাকে অন্য] চরিত্রের (অর্থাৎ ব্যবহারের] পরিবর্তে] এড়াতে হবে] )।
ড্যানিয়েল জেমস ব্রায়ার্স


1

কিছু উত্তর একসাথে রাখা:

এমএস এসকিউএল (ওরফে টি-এসকিউএল), মাইক্রোসফ্ট অ্যাক্সেস এসকিউএল, ডিবিএএসই / ডিবিএফ: SELECT [COLUMN], [COLUMN2] FROM [TABLE]

মাইএসকিউএল: SELECT `COLUMN`, `COLUMN2` FROM `TABLE`

এসকিউএলাইট, ওরাকল, পোস্টগ্র্যাস্কিল: SELECT "COLUMN", "COLUMN2" FROM "TABLE"

যোগ / সম্পাদনা করুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.