এসকিউএল কীওয়ার্ডগুলির মতো দেখতে এসকিউএল কলামের নামগুলি কীভাবে মোকাবেলা করবেন?


226

আমার কলামগুলির একটি বলা হয় from। আমি নামটি পরিবর্তন করতে পারি না কারণ আমি এটি তৈরি করি নি। আমি কি SELECT from FROM TableNameএসকিউএল সার্ভারকে বিভ্রান্ত করা থেকে বাঁচার জন্য কোনও বিশেষ বাক্য গঠন করার অনুমতি দিচ্ছি নাকি?


3
আমি বলবো সীমান্ত সনাক্তকারীদের জন্য এএনএসআই এসকিউএল এর ডাবল উদ্ধৃতি ব্যবহার করুন। এটি এসকিউএল সার্ভার সহ প্রায় কোনও ডিবিএমএসে কাজ করবে। অর্থাত্ SELECT "from" FROM TableName, সুন্দর এবং পোর্টেবল!
জার্লহ

উত্তর:


354

কলামের নামটি যেমন বন্ধনীতে মোড়ানো হয়, from[থেকে] হয়।

select [from] from table;

নিম্নলিখিতগুলি ব্যবহার করাও সম্ভব (একাধিক টেবিল জিজ্ঞাসা করার সময় দরকারী):

select table.[from] from table;

10
কী সম্পর্কে: select TableName.from from TableName; পিএস: এটি মাইএসকিউএল
ফ্যাব্রিকিও পিএইচ

1
আমি ঠিক আজ সকালে এটি চেষ্টা করেছি এবং এটি আমার মাইএসকিউএল ইনস্টলেশনতে কাজ করবে বলে মনে হচ্ছে না। এটি কোনও পরামিতি বা এমন কিছু যা এটি চালু করে?
কোডচিম্প

@CodeChimp - ব্যাকটিক ব্যবহার করার চেষ্টা করুন stackoverflow.com/questions/2901453/... এই প্রশ্নের / উত্তর মাইক্রোসফট SQL সার্ভার নির্দিষ্ট।
tvanfosson

ঠিক আছে, তবে @ ফ্যাব্রিকিওএইচ এটি মাইএসকিউএলে কাজ করার কথা উল্লেখ করেছে। আমি আমার স্থানীয় মাইএসকিউএল ইনস্টলটিতে চেষ্টা করার পরে আমি গুগল অনুসন্ধান থেকে এখানে এসেছি। আমি সন্ধান করছিলাম এসকিউএল-তে এই জাতীয় জিনিসগুলি পালানোর কোনও জেনেরিক এএনএসআই এসকিউএল উপায় ছিল কিনা। আমরা বর্তমানে এসকিউএল সার্ভার 2005 ব্যবহার করছি, তবে আমাদের অন্যান্য অ্যাপ্লিকেশনগুলিতেও ওরাকল রয়েছে। আমরা আমাদের জাভা ডিএওগুলিকে এমনভাবে কোড করতে চাই যে যদি কখনও আমাদের এসকিউএল সার্ভার থেকে অন্য কোনও জায়গায় যেতে বলা হয় তবে এটি কেবল "কাজ" হবে।
কোডচিম্প

@ কোডচিম্প আমি কোন আঙ্গুল না দিয়ে আমার সাথে যে সংখ্যাটি ঘটেছে তা গণনা করতে পারি। :)
tvanfosson

25

এটি যদি পোস্টগ্র্যাস এসকিউএল এ থাকত তবে নামের চারপাশে ডাবল কোট ব্যবহার করুন:

select "from" from "table";

দ্রষ্টব্য: অভ্যন্তরীণ PostgreSQL স্বয়ংক্রিয়ভাবে সমস্ত অব্যক্ত কমান্ড এবং প্যারামিটারগুলি লোয়ার কেসে রূপান্তর করে। কমান্ড এবং শনাক্তকারীরা কেস সংবেদনশীল নয় এর প্রভাব রয়েছে। tEblE থেকে sEleCt *; টেবিল থেকে নির্বাচন করুন * হিসাবে ব্যাখ্যা করা হয় ; । যাইহোক, ডাবল উদ্ধৃতিগুলির মধ্যে প্যারামিটারগুলি হ'ল হিসাবে ব্যবহৃত হয়, এবং সেইজন্য ক্ষেত্রে সংবেদনশীল: "টেবিল" থেকে * নির্বাচন করুন; এবং "টেবিল" থেকে * নির্বাচন করুন; দুটি ভিন্ন সারণী থেকে ফলাফল পায়।


যদিও ডাবল উদ্ধৃতিগুলি এমএস এসকিউএল-র ক্ষেত্রে, কেস সংবেদনশীলতা ছাড়াই কাজ করে। উদ্ধৃত শনাক্তকারীরা হ'ল, আফাইক, বন্ধনী-সীমিত চিহ্নিতকারীদের সমতুল্য বিকল্প।
পি ড্যাডি

ডাবল উদ্ধৃতি প্রেস্টো এসকিউএল কোয়েরি ইঞ্জিনের জন্যও অ্যামাজনের অ্যাথেনা ব্যবহার করে by
হ্যামফ্রেয়স

21

আপনি যখন এটি করছেন - উপন্যাসটি অন্য কোনও কিছু হিসাবে (বা এখনও ভাল, একটি ভিউ বা এসপি ব্যবহার করুন এবং পুরাতন সরাসরি অ্যাক্সেস পদ্ধতিটি অবমূল্যায়ন করুন)।

SELECT [from] AS TransferFrom -- Or something else more suitable
FROM TableName

14

এটি করার দুটি উপায়:

  1. এখানে হিসাবে এখানে উদ্ধৃতি ব্যবহার করুন:

টেবিলনাম থেকে `নির্বাচন করুন

  1. আপনি সারণীর নামের সাথে উল্লেখ করতে পারেন:

SELECT TableName.from FROM TableName


ধন্যবাদ! এটি আমার গুগল শিটের ক্যোয়ারী সংরক্ষণ করেছে যা BY কলাম থেকে টানতে চেষ্টা করেছে
পল

1
ধন্যবাদ, ডাবল উদ্ধৃতি এবং বর্গাকার বন্ধনী সিনট্যাক্সটি আমার ক্লায়েন্টের (মাইএসকিউএলওয়র্কব্যাঞ্চ) সাথে কাজ করে নি তবে পিছনের টিক পদ্ধতিটি কার্যকর হয়নি।
কিংআইন উত্তর

10

আপনার প্রশ্নের উত্তর এখানে দেওয়া হয়েছে বলে মনে হচ্ছে তবে আমি এই বিষয়ে আরও একটি মন্তব্য যুক্ত করতে চাই।

ডাটাবেসগুলি ডিজাইনকারীদের সংরক্ষিত কীওয়ার্ডগুলি সম্পর্কে ভালভাবে সচেতন হওয়া উচিত এবং সেগুলি ব্যবহার করা এড়ানো উচিত। যদি আপনি এটি ব্যবহার করে এমন কাউকে আবিষ্কার করেন তবে তাদের এটি সম্পর্কে (ভদ্রভাবে) অবহিত করুন। এখানে কীওয়ার্ডটি সংরক্ষিত শব্দ।

অধিক তথ্য:

"সংরক্ষিত কীওয়ার্ডগুলি অবজেক্টের নাম হিসাবে ব্যবহার করা উচিত নয় S এসকিউএল সার্ভারের পূর্ববর্তী সংস্করণগুলি থেকে আপগ্রেড করা ডেটাবেসগুলিতে শনাক্তকারী থাকতে পারে যা পূর্ববর্তী সংস্করণে সংরক্ষিত নয়, তবে এটি এসকিউএল সার্ভারের বর্তমান সংস্করণের জন্য সংরক্ষিত শব্দ You নাম পরিবর্তন না করা অবধি সীমিত চিহ্নিতকারী ব্যবহার করে বস্তু " http://msdn.microsoft.com/en-us/library/ms176027.aspx

এবং

"যদি আপনার ডাটাবেসে সংরক্ষিত কীওয়ার্ডগুলির সাথে মেলে এমন নামগুলি থাকে তবে আপনি যখন এই বিষয়গুলি উল্লেখ করেন তখন অবশ্যই আপনাকে সীমানা চিহ্নিতকারী ব্যবহার করতে হবে more আরও তথ্যের জন্য, সনাক্তকারী (ডিএমএক্স) দেখুন" " http://msdn.microsoft.com/en-us/library/ms132178.aspx


2
আরও ভাল এখনও আপনার ডাটাবেস অবজেক্টের জন্য বন্ধনী ব্যবহার করুন।
banging

8

আপনি যদি এসকিউএল সার্ভার ব্যবহার করে থাকেন তবে আপনি কেবল কলাম বা টেবিলের নামের চারপাশে বর্গাকার বন্ধনীগুলি মোড়ানো করতে পারেন।

select [select]
from [table]

5

অ্যাপাচি ড্রিলে ব্যাককোটগুলি ব্যবহার করুন:

select `from` from table;

3

আমিও এই সমস্যার মুখোমুখি হয়েছি। এবং এর সমাধান হ'ল [কলাম_নাম] কে কোয়েরিতে রাখুন।

string query= "Select [Name],[Email] from Person";

সুতরাং এটি পুরোপুরি ভাল কাজ করবে।


3

হাই আমি টেরাদাতা সিস্টেমগুলিতে কাজ করি যা সম্পূর্ণ এএনএসআই অনুবর্তী comp এই জাতীয় কলামগুলির নাম দেওয়ার জন্য "" ডাবল উদ্ধৃতি ব্যবহার করুন।

উদাহরণস্বরূপ typeএকটি এসকিউএল সংরক্ষিত কীওয়ার্ড, এবং যখন উদ্ধৃতিতে ব্যবহার করা হয়, তখন 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

আমি তাড়াদাতা ডাটাবেসের সাথে ডিবিভারে এই কাজটি নিশ্চিত করি, ধন্যবাদ!
পল

1

আপনি আপনার কলামের নামটি বন্ধনীতে রাখতে পারেন:

Select  [from] from < ur_tablename>

অথবা

একটি অস্থায়ী টেবিল রাখুন তারপর আপনার পছন্দ মত ব্যবহার করুন।
উদাহরণ:

Declare @temp_table table(temp_from varchar(max))

Insert into @temp_table
Select * from your_tablename

এখানে আমি কেবল ধরেই নিয়েছি যে আপনার_সামগ্রহে শুধুমাত্র একটি কলাম রয়েছে (যেমন থেকে)।


3
এটি অনুমান করে [from]যে your_tablenameএটি পেয়েছে কেবল কলাম ।
Andriy এম

অস্থায়ী টেবিল থেকে আপনি কী অর্জন করবেন? এটি সম্পূর্ণ অকেজো বলে মনে হচ্ছে, প্রশ্নের সাথে কিছু করার নেই।
rjmunro

@ আরজমুনরো, না, এটি সম্পূর্ণ অকেজো বলে মনে হচ্ছে না। আমার একটি কেস রয়েছে যেখানে আমি এসকিউএল থেকে একটি সারণী ঘনকটি জিজ্ঞাসা করি এবং এটি '[টোটাল]' এর মতো কলামগুলির নাম ফেরত দেয়। অর্থাৎ নামটিতে নিজেই '[' এবং ']' রয়েছে। আপনি এই জাতীয় কলামটি পুনরুদ্ধার করতে [[মোট]] এবং [মোট] ব্যবহার করতে পারবেন না। সবচেয়ে সহজ উপায় হল কোয়েরির ফলাফলটি একটি টেম্প টেবিলের মধ্যে রেখে দেওয়া।
darlove

@darlove আপনি কোট ব্যবহার করা যাবে না: "[Total]"? অথবা এটি থেকে বাঁচার কোনও উপায় আছে, এরকম কিছু [\[Total\]]?
rjmunro

@ রিজমুনরো, এইটি নিয়ে কিছুটা এক্সপেরিমেন্ট করার পরে আমি আর একটি উপায় পেয়েছি যার সম্পর্কে আমি জানতাম না: আপনি QUOTED_IDENTIFIER টি চালু করতে পারেন এবং তারপরে আপনি যা বলছেন, ডাবল উক্তিটি ব্যবহার করতে পারেন "সুতরাং, এটি কেবল অন্য একটি উপায় তবে আমি টেম্প টেবিল বিকল্পটি পুরোপুরি বাতিল করব না
ডারলভ

1

কোন কলামটি কী কীওয়ার্ড ছিল তা আপডেট করার চেষ্টা করার সময় আমি একই ইস্যুতে ছুটে এসেছি । উপরের সমাধানটি আমাকে সাহায্য করে নি। আমি কেবল সারণীর নাম নির্দিষ্ট করে এটি সমাধান করেছি:

UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')

1

নিম্নলিখিত নিখুঁতভাবে কাজ করবে:

SELECT DISTINCT table.from AS a FROM table

1

মাইএসকিউএলে বিকল্প হিসাবে ব্যাক কোট (() ব্যবহার করার জন্য, আপনি কলামের নামগুলি পরিবর্তন করতে UI ব্যবহার করতে পারেন। টেবিলটি রাইট ক্লিক করুন> টেবিল পরিবর্তন করুন> বর্গ কীওয়ার্ড> প্রতিশ্রুতিবদ্ধ কলামের নাম সম্পাদনা করুন।

select [from] from <table>

একটি নোট হিসাবে, উপরেরটি মাইএসকিউএল এ কাজ করে না


1

উত্তর এবং আমার নিজের অভিজ্ঞতা থেকে বিচার করা। একমাত্র গ্রহণযোগ্য উত্তর, আপনি পোর্টেবল হওয়ার পরিকল্পনা করছেন যদি সারণি, কলাম বা অন্যান্য নামের জন্য এসকিউএল কীওয়ার্ড ব্যবহার না করা হয়।

এই সমস্ত উত্তর বিভিন্ন ডাটাবেসে কাজ করে তবে দৃশ্যত অনেকগুলি এএনএসআই সমাধান সমর্থন করে না।

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