2009-10-01 24 views
10

" का उपयोग करके एलिसिंग क्या कॉलम को अलियासिंग करते समय = AS का उपयोग करने के लिए कोई विशेष कारण (प्रदर्शन या अन्यथा) है?टी-एसक्यूएल - "=" बनाम "

select 
alias1  = somecolumn 
alias2  = anothercolumn 
from 
tables 
etc... 
बजाय इस बात का

:

मेरे (पठनीयता के लिए) व्यक्तिगत पसंद इस का उपयोग करने के लिए है

select 
somecolumn as alias1 
anothercolumn as alias2 
from 
tables 
etc... 

मैं किसी भी कारण से मैं ऐसा क्यों कर नहीं किया जाना चाहिए लाभ नहीं ले पा रहा हूं? जब उनके कॉलम स्वरूपित करने की बात आती है तो अन्य लोगों की प्राथमिकताएं क्या होती हैं?

+1

मुझे अपनी प्रेरणाओं पर विस्तार करना चाहिए। मुझे लंबे और घोंसले वाले प्रश्नों में एलियाड कॉलम की खोज करना सबसे कठिन और संभावित रूप से क्वेरी को बनाए रखने के त्रुटि प्रवण भाग के रूप में खोजता है। आईएमएचओ अन्य संभावित परिणामों जैसे कि चयन = बनाम = और जहां खंड और अन्य में एक परेशानी का बहुत कम है और मुझे आश्चर्य हुआ कि अन्य राय क्या हैं? – mwjackson

+1

आपके पास मेरा वोट है ... लेकिन ऐसा लगता है कि हम

+1

से अधिक हैं, ऐसा दिखाई देगा। मुझे लगता है कि महत्वपूर्ण बात यह है कि इसकी पठनीय और अच्छी तरह से पहचाना जाता है, जो भी लोग वरीयताएं हैं ... – mwjackson

उत्तर

14

'=' मान्य एएनएसआई एसक्यूएल नहीं है, इसलिए आपको एक अलग डीबीएमएस पर अपना आवेदन चलाने की कठिनाई होगी।

(जब एएनएसआई फार्म का उपयोग किया जाता है, लेकिन वैकल्पिक 'के रूप में' मैं, परिणाम को पढ़ने के लिए मुश्किल लगता है व्यक्तिगत रूप से छोड़ दिया जाता है यह है।)

+0

एक मान्य बिंदु है, लेकिन मैं तर्क दूंगा कि 95% मामलों में पठनीयता में सुधार 5 से अधिक है उन मामलों का% जहां आपको एक अलग डीबीएमएस – mwjackson

+1

के खिलाफ एक क्वेरी निष्पादित करने की आवश्यकता होगी पठनीयता निर्णय बल्कि व्यक्तिपरक है! :-) आपको कितनी बार एक अलग डीबीएमएस की आवश्यकता है परियोजना के प्रकार पर निर्भर है; यदि यह टी-एसक्यूएल एक्सटेंशन पर निर्भर एमएस उन्मुख कंपनी के लिए एक इन-हाउस टूल उचित हो सकता है; कहें, एक ओपन-सोर्स प्रोजेक्ट, जो वास्तव में फिट नहीं होगा। – bobince

+1

+1 यह एकमात्र कारण होगा कि मैं अपनी एसक्यूएल लेखन शैली को बदलने पर विचार क्यों करूंगा लेकिन घटना होने तक मैं स्थगित कर दूंगा (जो कभी भी नहीं हो सकता है)। –

2

मैं AS का उपयोग करना पसंद करता हूं क्योंकि = कहां से कथन में उपयोग किया जाता है, और एक लंबी क्वेरी में भ्रमित हो सकता है।

+1

केवल अगर आप अपने चुने हुए खंड के अंदर घोंसला चुनते हैं, या अपनी क्वेरी को अच्छी तरह से स्वरूपित नहीं करते हैं, तो दोनों मेरी राय में बहुत अधिक चिंताएं हैं – mwjackson

+0

मैंने '=' और 'AS' का उपयोग करके विभिन्न तरीकों से प्रश्नों को स्वरूपित किया। SQL सर्वर के साथ लंबे समय तक काम करने के बाद, मैं '=' ​​का उपयोग करना पसंद करता हूं। मेरे मामले में, क्योंकि कुछ कॉलमों को व्यापक तर्क की आवश्यकता होती है और 'एएस' का पता लगाने में सक्षम होने के कारण कुछ मामलों में जटिल हो सकता है, जबकि '=' हमेशा ALIAS के बाद होगा। जैसा कि @ mwjackson कहते हैं, यह सब इस बात पर निर्भर करता है कि आप कोड को कैसे प्रारूपित करते हैं, और जहां तक ​​मेरी व्यक्तिगत राय का संबंध है। मैं इस प्रश्न पर आया हूं क्योंकि मैं एक और दूसरे के बीच प्रदर्शन निर्धारित करना चाहता हूं, लेकिन पठनीयता स्थिरता बनी हुई है। – JotaPardo

8

मैं इसे आसानी से उपयोग नहीं करता क्योंकि यह समानता संचालन की तरह बहुत अधिक दिखता है। 'AS' स्पष्ट है कि यह मेरे लिए संदिग्ध नहीं है।

एसक्यूएल में ऊपरी मामले का उपयोग नहीं करने के समान, मुझे इसे पढ़ने में मुश्किल लगता है।

2

मैं इनमें से किसी भी का उपयोग करना पसंद करता हूं। मैं सिर्फ

** के बीच
SELECT MAX(price_column) maximumprice FROM prices 
+0

मैं यह भी करता हूं, प्रश्नों के भीतर "as" के उपयोग के पीछे दर्दनाक व्यक्तिगत इतिहास के कारण।मैं * हमेशा * सुनिश्चित करता हूं कि उन ऊर्फों का नाम सफेद स्थान के उपयोग के माध्यम से खड़ा हो और (जब एक से अधिक हो) कॉलम संरेखण। –

0

भी मैं 'के रूप में' के स्थान पर '=' उपयोग करने को प्राथमिकता में किसी भी कीवर्ड के बिना स्तंभ का नाम देते हैं। '=' कोड में भ्रम पैदा करता है।

उदाहरण के लिए:

column as alias1 
+5

... और इसका मतलब मानव जाति के लिए बहुत है? ;) – Scoregraphic

+0

मैं '=' ​​का उपयोग करना पसंद करता हूं। मेरे मामले में, क्योंकि कुछ कॉलमों को व्यापक तर्क की आवश्यकता होती है और 'एएस' का पता लगाने में सक्षम होने के कारण कुछ मामलों में जटिल हो सकता है, जबकि '=' हमेशा ALIAS के बाद होगा। यह सब इस बात पर निर्भर करता है कि आप कोड को कैसे प्रारूपित करते हैं, और जहां तक ​​मेरी व्यक्तिगत राय का संबंध है। मैं इस सवाल पर आया हूं क्योंकि मैं एक और दूसरे के बीच प्रदर्शन निर्धारित करना चाहता हूं, लेकिन पठनीयता स्थिरता बनी हुई है। – JotaPardo

10

कुछ प्रतिभार में डाल करने के लिए, मैं = का उपयोग कर पसंद करते हैं।

यदि मैं किसी भी तरह से क्वेरी परिणामों का उपभोक्ता हूं, तो मुझे यह देखने में अधिक सुविधाजनक लगता है कि उपभोक्ता के रूप में कौन से कॉलम मैं उपयोग कर सकता हूं।

मैं इस

SELECT 
     @MaxElementObligationID + eo.ElementObligationID AS [ElementObligationID] 
     , eo.ElementID AS [ElementID] 
     , eo.IsotopeID AS [IsotopeID] 
     , eo.ObligationID AS [ObligationID] 
     , eo.ElementWeight * -1 AS [ElementWeight] 
     , eo.FissileWeight * -1 AS [FissileWeight] 
     , eo.Items * -1 AS [Items] 
     , eo.Comment AS [Comment] 
     , eo.AdditionalComment AS [AdditionalComment] 
     , @UserID AS [Aanmaak_userid] 
     , GetDate() AS [Aanmaak_tijdstip] 
     , @UserID AS [Laatste_wijziging_userid] 
     , GetDate() AS [Laatste_wijziging_tijdstip] 
FROM dbo.KTM_ElementObligation eo 
     INNER JOIN dbo.KTM_ElementObligationArticle eoa ON 
      eoa.ElementObligationID = eo.ElementObligationID 

बस मेरी 2c पर इस

SELECT 
     [ElementObligationID] = @MaxElementObligationID + eo.ElementObligationID 
     , [ElementID] = eo.ElementID 
     , [IsotopeID] = eo.IsotopeID 
     , [ObligationID] = eo.ObligationID 
     , [ElementWeight] = eo.ElementWeight * -1 
     , [FissileWeight] = eo.FissileWeight * -1 
     , [Items] = eo.Items * -1 
     , [Comment] = eo.Comment 
     , [AdditionalComment] = eo.AdditionalComment 
     , [Aanmaak_userid] = @UserID 
     , [Aanmaak_tijdstip] = GetDate() 
     , [Laatste_wijziging_userid] = @UserID 
     , [Laatste_wijziging_tijdstip] = GetDate() 
FROM dbo.KTM_ElementObligation eo 
     INNER JOIN dbo.KTM_ElementObligationArticle eoa ON 
      eoa.ElementObligationID = eo.ElementObligationID 

पसंद करते हैं।

+1

+1: मैंने कुछ परियोजनाओं पर काम किया जहां "एलियास = ..." और "... के रूप में उपनाम" का उपयोग विभिन्न संग्रहीत प्रक्रियाओं के बीच मिश्रित किया गया था - और कभी-कभी समान संग्रहीत प्रक्रिया। मुझे "उपनाम = ..." पढ़ने और लिखने के लिए बहुत आसान लगता है। विशेष रूप से, मुझे लगता है कि "... {tab} {tab} {tab} का उपयोग उपनाम के रूप में सही-संरेखित उपनाम" थोड़ा अधिक पठनीय कोई संरेखण नहीं है, लेकिन रखरखाव एक दुःस्वप्न है। – Juliet

4

= असाइनमेंट और समानता के साथ भ्रमित किया जा सकता है; वास्तव में, प्रपत्र मैं वास्तव में पसंद नहीं है है जब यह एक स्ट्रिंग (आमतौर पर जब रिक्त स्थान शामिल कर रहे हैं) की तरह दिखता है:

somecolumn as 'alias 1' 

या

'alias 1' = somecolumn 

मैं अब तक वैकल्पिक अंकन पसंद करते हैं:

somecolumn as [alias 1] 
+0

भ्रम की संभावना है, लेकिन केवल अगर आप अपने चुने हुए खंड के अंदर नेस्टेड चयन कर रहे हैं, या अपनी क्वेरी को अच्छी तरह से स्वरूपित नहीं कर रहे हैं, तो दोनों मेरी राय में बहुत अधिक चिंताएं हैं – mwjackson

+0

एक और नोटेशन: '[उर्फ 1] = somecolum' – JotaPardo

4

"=" केवल सादा संदिग्ध है।

यदि आप प्रत्येक चयन खंड को तोड़ने के लिए इंडेंट करते हैं ...

select 
    alias1  = somecolumn, 
    alias2  = anothercolumn, 
    result  = column1 * column2 
from 
    table 
.... 


select 
    somecolumn as   alias1, 
    anothercolumn as  alias2, 
    column1 * column2 as result 
from 
    tables 
    ... 
+3

जबकि मैं असहमत हूं कि = संदिग्ध है, यह एक अच्छा विकल्प है ... – mwjackson

+1

अच्छा इंडेंटेशन वास्तव में पठनीयता में मदद करता है। लेकिन मैं हमेशा उपनाम के ठीक पहले "AS" को संरेखित करता हूं। यह और अधिक पठनीय है। –

2

कॉलम उपनाम से "=" वाक्य रचना घोषित एसक्यूएल सर्वर 2008 में पदावनत कर रहे हैं और अगले संस्करण में समर्थित नहीं। MSDN article देखें।

+3

जो केवल * 'string_alias' = अभिव्यक्ति *, ** ** ** * column_alias = अभिव्यक्ति * के बहिष्कार का उल्लेख नहीं करता है, जो अभी भी उपलब्ध है –

3

पोस्टफ़िक्स उर्फ ​​प्रपत्र (के साथ या बिना "जैसा") के बीच संगत है कॉलम और टेबल उपनाम। व्यक्तिगत रूप से, मैं "के रूप में" के उपयोग को लागू करने के लिए एक विकल्प चाहते हैं, और फिर आप स्थिति नहीं होती:

select 
    columnA, 
    columnB 
    columnC 
from 
    table 

एक परिणाम की उम्मीद 3.

के बजाय दो स्तंभों के साथ सेट का निर्माण

मैं यह भी कहना चाहते हैं कि उपसर्ग के साथ "=" फार्म, यह इसे और अधिक मुश्किल है अगर आप एक परिणाम के सेट और चर काम प्राप्त करने के मिश्रण कर रहे हैं पढ़ने के लिए कर सकते हैं:

select 
    cA = columnA, 
    @cB = columnB, 
    cC = columnC 
from 
    table 
1

जबकि मैं प्रयोग करने के लिए एक प्राथमिकता है एएस, यहां वास्तव में महत्वपूर्ण बात यह है कि कॉर्पोरेट मानक होना और इसका पालन करना है। यदि आपके अधिकतर लोग = से अधिक का उपयोग करते हैं तो सभी को इसका उपयोग करना चाहिए। कोडिंग मानकों से कोड को बनाए रखना आसान हो जाता है जो आपके द्वारा चुने गए विशिष्ट मानक को नहीं। यदि हर कोई एक ही चीज़ का उपयोग करता है, तो आपकी आंख इसे चुनने के लिए उपयोग की जाती है।

3

तीन तरीके मैं उर्फ ​​करने के बारे में पता:

  1. TableColumn MyAlias ​​के रूप में
  2. TableColumn MyAlias ​​
  3. MyAlias ​​= TableColumn

पुन: 1), मैं इस के रूप में यह है पसंद करते हैं सबसे स्व-दस्तावेज कोड (आईएमओ), और यह मुझे AS की खोज करने देता है यदि मुझे उपनाम खोजने की आवश्यकता है ..

पुन: 2), यह मेरी दूसरी पसंद है, लेकिन AS के बिना, मुझे कभी यकीन नहीं है कि यह एक कट-एंड-पेस्ट त्रुटि है या नहीं, खासकर लंबे, बुरी तरह से स्वरूपित प्रश्नों में।

पुन: 3), मैं इस एक वजह से पसंद नहीं है) यह एक काम की तरह लग रहा है, और ख) यह ON खंड और CASE बयान

तो साथ बहुत अधिक में मिश्रित, अपने वोट का प्रयोग है आपके उपनामों के लिए AS कीवर्ड।

+0

उपनामों के संबंध में एसक्यूएल में '=' कम्यूटेटिव है? मैंने इसे कभी भी नहीं देखा है क्योंकि आप 'MyAlias ​​= TableColumn' के बजाय वर्णन कर रहे हैं। –

+0

आप सही हैं, मैंने इसे अभी स्थानांतरित कर दिया है। – RedFilter

0

आप या तो

ड्रॉप के रूप में इस्तेमाल करते हैं और उपयोग करने के लिए की जरूरत नहीं है

SELECT originalname alias 
FROM 
    tablename 
2

मैं

SELECT 
column1 = table.column1 
,column2 = table.colum2 
FROM table 

मैं के रूप में आसानी उल्लेखनीय तुलना में एक = प्रस्थान करना नहीं मिल चाहते (मैं एएस से स्पॉट = तेज कर सकता हूं)

साथ ही जब कोई केवल चयन कॉलम उपनाम करता है, कभी-कभी यह ' यह जानने में भ्रमित है कि कौन सा है :)

1

मैं यहां पोस्ट करने वाले अन्य लोगों के रूप में भाग्यशाली नहीं हूं। जिस कोड के साथ मैं काम करता हूं वह आम तौर पर किसी और द्वारा लिखा जाता है और यह दुर्लभ है कि सीएएसई कथन या अन्य गणना, concatenations या तर्क नहीं हैं जो T_SQL स्क्रिप्ट की कई पंक्तियों पर एक एकल प्रविष्टि का कारण बनता है।

'एएस' के बजाए बराबर चिह्न का उपयोग करना पढ़ने के लिए कहीं अधिक आसान है। एक बराबर चिह्न के साथ आप जानते हैं कि ऊर्फ नाम जो आप खोज रहे हैं वह पंक्ति की पहली स्थिति में है। जब 'एएस' का उपयोग किया जाता है और T_SQL कई पंक्तियों को फैलाता है, तो उपनाम का नाम सचमुच कहीं भी हो सकता है।

'एएस' का उपयोग होने पर बराबर होने पर 'आइटम' उपनाम को खोजने के लिए अब तक कहीं अधिक आसान है।

SELECT 
     ElementObligationID = @MaxElementObligationID + eo.ElementObligationID 
     , ElementID = eo.ElementID 
     , IsotopeID = eo.IsotopeID 
     , ObligationID = eo.ObligationID 
     , ElementWeight = eo.ElementWeight * -1 
     , FissileWeight = eo.FissileWeight * -1 
     , Items = CASE WHEN eo.Items < 0 THEN eo.Items * -1 
        WHEN eo.Items > 0 THEN eo.Items 
        ELSE 0 END 
     , Comment = eo.Comment 
     , AdditionalComment = eo.AdditionalComment 
     , Aanmaak_userid = @UserID 
     , Aanmaak_tijdstip = GetDate() 
     , Laatste_wijziging_userid = @UserID 
     , Laatste_wijziging_tijdstip = GetDate() 
FROM dbo.KTM_ElementObligation eo 
     INNER JOIN dbo.KTM_ElementObligationArticle eoa ON 
      eoa.ElementObligationID = eo.ElementObligationID 

अब 5 से अधिक बार कोड यहाँ है कि की राशि होने और 'आइटम' उर्फ ​​खोजने के लिए की आवश्यकता होगी, कल्पना।

SELECT 
     @MaxElementObligationID + eo.ElementObligationID AS ElementObligationID 
     , eo.ElementID AS ElementID 
     , eo.IsotopeID AS IsotopeID 
     , eo.ObligationID AS ObligationID 
     , eo.ElementWeight * -1 AS ElementWeight 
     , eo.FissileWeight * -1 AS FissileWeight 
     , CASE WHEN eo.Items < 0 THEN eo.Items * -1 
      WHEN eo.Items > 0 THEN eo.Items 
      ELSE 0 END AS Items 
     , eo.Comment AS Comment 
     , eo.AdditionalComment AS AdditionalComment 
     , @UserID AS Aanmaak_userid 
     , GetDate() AS Aanmaak_tijdstip 
     , @UserID AS Laatste_wijziging_userid 
     , GetDate() AS Laatste_wijziging_tijdstip 
FROM dbo.KTM_ElementObligation eo 
     INNER JOIN dbo.KTM_ElementObligationArticle eoa ON 
      eoa.ElementObligationID = eo.ElementObligationID 

'एएस' बनाम '=' एक मज़बूत और मनमाने ढंग से वरीयता नहीं है। मैं अतिसंवेदनशील नहीं हूं जब मैं कहता हूं कि ऐसे समय होते हैं जब उपनाम नाम ढूंढने में कई मिनट लगते हैं, क्योंकि मैं अब स्क्रिप्ट के लेखक को बनाए रखने का प्रभारी हूं, उनके उपनाम के साथ बराबर चिह्न का उपयोग नहीं करता था। मैं कोड में उपनाम नामों को देखने के लिए आईटी पेशेवर का भुगतान करने के बजाय समय, धन और संसाधनों की एक बड़ी बर्बादी के बारे में नहीं सोच सकता !! यदि आप रखरखाव, पठनीयता और दक्षता पर ध्यान रखते हैं तो एक सही और गलत जवाब है। आपका काम व्यवसाय मूल्य प्रदान करना है, अपने दिन को वाल्डो की तलाश न करें!

संबंधित मुद्दे