কলাম সংজ্ঞাটির শুরুতে বা শেষে একটি কলামের নাম রাখার মধ্যে কোনও পার্থক্য রয়েছে কি?


12

আমি সবসময় আমার কলামের মতো নাম দেখেছি এবং লিখেছি

SELECT 1 as ColumnName

তবে আজ এমন একটি ক্যোয়ারী এসেছে যা ব্যবহার করা হয়েছিল

SELECT ColumnName = 1

এই দুটি ক্যোয়ারী কার্যকর করার ক্ষেত্রে কী কোনও পার্থক্য রয়েছে? বা ডিবিএগুলির মধ্যে কোনটি ব্যবহার করা উচিত তা নিয়ে কোনও মান রয়েছে?

ব্যক্তিগতভাবে আমি মনে করি 2nd সহজ হবে পড়া / (ভাল উদাহরণ আর কলাম সংজ্ঞা বজায় রাখার জন্য হবে এখানে থেকে এই নিবন্ধটি ), তবে আমি কখনও 2nd সামনে আজ অবাক হচ্ছি ব্যবহৃত সিনট্যাক্স দেখা করেছি যদি কোনো কারণে আমি হওয়া উচিত এটি ব্যবহার করছি.


2
মনে রাখবেন যে মন্তব্য অ্যালাইজিংয়ের অ্যাসাইনমেন্ট ফর্মটি পোর্টেবল নয়, সুতরাং আপনি যখন প্রচুর উত্সযুক্ত কলামের কাজটি করছেন তখন এটি জিনিসগুলি বেশ পঠনযোগ্য করে তোলে, পরে এটি অন্য ডিবিএমএসে রূপান্তরিত করতে পেরে বিরক্তিকর হতে পারে।
ক্যাড রক্স

@ কেড সেলকো সর্বদা নির্দিষ্ট কিছু বিষয়ে সেই যুক্তি তৈরি করে। যদি আমাকে কোনও এসকিউএল সার্ভার কোডবেসকে ওরাকল বা পিজি বা মাইএসকিউএলে রূপান্তর করতে হয় তবে আমার উদ্বেগের মধ্যে উরফ রচনাটি সবচেয়ে কম হবে। , যেহেতু Celko অসদৃশ, আমি এড়ানো কোন আগ্রহ আছে সব ক্ষেত্রে মালিকানা বৈশিষ্ট্য আমরা কখনও একটি ভিন্ন RDBMS আমাদের সমগ্র স্থাপত্য সরানো। আমি ভাবছি কত ঘন ঘন যে সত্যিই একটি শ্রেণীকক্ষ বাইরে ঘটে ...
হারুন বারট্রান্ড

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

উত্তর:


17

দুই ধরণের এলিয়াসিং ( asবিরোধিতা =) এর অন্তর্নিহিত কার্যকারিতাটিতে কোনও পার্থক্য নেই । এটি যা ফুটে উঠেছে তা হ'ল আপনি যা উল্লেখ করেছেন: পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা।

আমার মতে প্রাক্তন ( <Expression> as <Alias>) এটি স্ব-বর্ণনামূলক হওয়ায় অনেক বেশি পাঠযোগ্য। আপনার যখন SELECT ColumnName = 1আমি মনে করি তখন ভুল করা খুব সহজ হবে those দীর্ঘ ক্লান্ত রাতগুলিতে ভেরিয়েবল সেট করা হিসাবে। আপনি যে ভুল হতে পারে SELECT @ColumnName = 1এবং এটি সম্পূর্ণ ভিন্ন কার্যকারিতা হবে। অতএব, "ডাবল বর্ণন", বা আরও খারাপ ... কোয়েরির যে কোনও সম্ভাবনা রোধ করার জন্য ... বোঝার / কোডিংয়ে ত্রুটি, আমি SELECT 1 as ColumnName100% সময় নিয়ে চলেছি।

ব্যক্তিগত পছন্দ, তবে ধারাবাহিকতা (নিজের জন্য এবং আপনার দলের মধ্যে) রাজা । আপনি যেটিকে সহজ মনে করেন, তার সাথে যান এবং সর্বদা এটি করুন। কাউকে সমস্যা সমাধান / পর্যালোচনা / কোড বজায় রাখার জন্য পিছনে পিছনে স্যুইচ করা ছাড়া আর হতাশার আর কিছু নেই।

তৃতীয় নিরীক্ষিত উপায়টি হ'ল ব্যবহার করা <Expression> <Alias>। অন্য কথায়, asকীওয়ার্ড ছাড়াই আপনার দ্বিতীয় উপায় । আমি মনে করি এটি =চিহ্নের মতোই খারাপ । এতে লাভের অভাব কী? তিনটি অতিরিক্ত অক্ষর ( asএবং একটি স্থান) টাইপ করা হচ্ছে না । এর মূল্য নেই।

অতিরঞ্জিত উদ্দেশ্যে, এই জাতীয় একটি কোয়েরি একবার দেখুন:

use AdventureWorks2012;
go

select
    [New Name] = Name,
    NewDepId = DepartmentID,
    GroupName as GName,
    ModifiedDate MyModDate
from HumanResources.Department;

আমি যে কোডটি পর্যালোচনা করতে চাই তা নয়।


5
এটি সর্বদা সর্বশেষটি দেখতে আমাকে বিরক্ত করে, যেখানে তারা "হিসাবে" কীওয়ার্ডটি বাদ দেয়। কোডের একগুচ্ছ দেখার সময় পড়ার মতো ব্যথা প্রয়োজন নেই।

10

ব্যক্তিগতভাবে আমি alias = expressionপড়া এবং বোঝা আরও সহজ মনে করি । কারণটি হ'ল যখন আমি SELECTদীর্ঘ বিবৃতিযুক্ত একটি বিবৃতিতে সমস্যার সমাধান করি তখন আমি সম্ভবত কলামের নাম দিয়ে অভিব্যক্তিটি খুঁজে পেতে চাই, অন্যভাবে নয়। দ্রুত, অ্যাপ্লিকেশনটি যে ভাবটি দেখছে তা দ্রুত পান alias2:

SELECT
  alias1 = (long expression with aggregates and multiple column references),
  (long expression with aggregates and multiple column references AS alias2
FROM ...

এটাই আমার পছন্দ। আপনার ভিন্ন হতে পারে। বিষয়গত / স্বাদের কারণ বাদে একটি বা অন্যটি ব্যবহারের সত্যিকারের সুবিধা নেই। গুরুত্বপূর্ণ বিষয়টি হ'ল আপনি এটি করার জন্য একটি উপায় বেছে নিয়েছেন এবং ধারাবাহিকভাবে এটি করুন (এবং আপনি যদি কোনও মুদ্রা ফ্লিপ না করেন তবে আপনি যখন অন্যভাবে পছন্দ করেন এমন ব্যক্তির বিরুদ্ধে আসেন তখন আপনার পছন্দটি ডিফেন্ড করতে সক্ষম হন)। তবে আপনি যদি ডিবিএর জন্য কোডটি আমার মতো মজাদার হিসাবে লিখেন তবে এটি আবার লেখার জন্য প্রস্তুত থাকুন। :-)

আমি এই সম্পর্কে ব্লগ করেছি

আমি যে জিনিসটি সম্পর্কে আরও দৃ stronger় বোধ করি তা হ'ল ওরফে নামের চারপাশে একক উদ্ধৃতি ব্যবহার করা, যেমন

column AS 'alias'
'alias' = column

একটি ফর্ম অবচিত করা হয়েছে তবে উভয়ই পড়া খুব কঠিন - এবং অনেক নবজাতক উপনামটিকে একটি স্ট্রিং আক্ষরিক হিসাবে ভুল করেন, যেহেতু এটি দেখতে এটির মতো দেখাচ্ছে। একই কারণে, আমি ডাবল কোট ( "alias") এর ব্যবহারকে একেবারে ঘৃণা করি । আপনার যদি আপনার উপনামটি পালানোর দরকার হয় কারণ এটি একটি সংরক্ষিত শব্দ বা অন্যথায় খারাপভাবে বেছে নেওয়া বা ফর্ম্যাট করা থাকে তবে ব্যবহার করুন [square brackets]


2
উদ্ধৃতি দিকটি সম্পর্কে সম্পূর্ণ সম্মত হন। দীর্ঘ অভিব্যক্তি হিসাবে, আমি ব্যক্তিগতভাবে যা করি তা হ'ল ক্যারেজ রিটার্ন এবং নিউলাইন ট্যাবিং ব্যবহার করুন এবং তারপরে as <Alias>কলাম সংজ্ঞাটির শেষ লাইনে রাখুন। তবে স্পষ্টতই সম্মত হয়েছেন, আপনার কফিটি আপনার পছন্দ মতোই এটিও ব্যক্তিগত।
টমাস স্ট্রিংগার

@ থমাস স্ট্রিংগার দেখুন আমি বরং গাড়ীর মত প্রকাশটি ফিরিয়ে আনব। একটি লাইন বন্ধ শুরু হয়, তাহলে সঙ্গে AS Aliasযে ASযখন আমি একটি বিশেষ টেবিল নামের জন্য উল্লম্বভাবে স্ক্যান করছি খুব দরকারী নয়। আমি বাজি দিয়েছিলাম যে কমাটি কোথায় রাখা যায় তাতে আমরা একমত নই। :-)
অ্যারন বারট্রান্ড

আমি একবার আমার কলামের উপাত্তের চারপাশে একক উদ্ধৃতি ব্যবহার করার চেষ্টা করেছি কারণ এটি সেগুলিকে লাল করে তোলে যা এসএসএমএসে দাঁড়িয়েছিল, তবে উদ্ধৃতি কীটি এত তাড়াতাড়ি টাইপ করার বিরক্তি আমার পক্ষে খুব বেশি হয়ে গিয়েছিল এবং আমি আমার অলস পথে ফিরে এসেছি। এছাড়াও, যখন আমার জিজ্ঞাসায় স্ট্রিং ছিল তখন এটি এর উদ্দেশ্যযুক্ত উদ্দেশ্যে কাজ করে না। আমি সম্ভবত এটি ব্যবহার করব ASযেহেতু আমরা এখনই ব্যবহার করি (আমি AS ColumnNameপ্রায়শই একটি নিউলাইন যুক্ত করি যাতে তারা মোটামুটিভাবে লাইনে দাঁড়ায় ) তবে আমি একমত যে =দীর্ঘ কলাম সংজ্ঞাতে আরও বেশি পাঠযোগ্য।
রাচেল

2
@ অ্যারনবার্ট্র্যান্ড কমাগুলি প্রথমে রাখার জন্য আমার যুক্তিটি হ'ল বিশেষত মাল্টি-লাইন কলাম সংজ্ঞা সহ কলাম সংজ্ঞা কোথায় শুরু হয় তা বলা সহজ করে তোলে।
রাহেল

1
@ অ্যারনবার্ট্র্যান্ড আমি সাধারণত সংবেদনশীল ইনডেন্ট কোড> নিয়ে কাজ করি না। <
রাচেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.