2009-10-01 33 views
10

Có bất kỳ lý do cụ thể nào (hiệu suất hay cách khác) để sử dụng AS trước khi = khi đánh dấu một cột không?T-SQL - Bí danh sử dụng "=" so với "là"

sở thích cá nhân của tôi (cho dễ đọc) là sử dụng này:

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

thay vì điều này:

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

Tôi có bỏ lỡ bất kỳ lý do tại sao tôi không nên làm điều này? Tùy chọn của người khác khi định dạng cột của họ là gì?

+1

Tôi nên xây dựng dựa trên động cơ của mình. Tôi tìm kiếm các cột bí danh trong các truy vấn dài và lồng nhau là phần dễ gây phiền toái nhất và có thể là lỗi trong việc duy trì các truy vấn. IMHO các hậu quả khác có thể xảy ra như phân biệt giữa một trong mệnh đề chọn so với và = trong mệnh đề where và những mệnh đề khác ít gây phiền toái cho tôi và tôi tự hỏi ý kiến ​​của người khác là gì? – mwjackson

+1

Bạn có phiếu bầu của tôi ... nhưng có vẻ như chúng tôi đã vượt quá số

+1

Nó sẽ xuất hiện như vậy. Tôi cho rằng điều quan trọng là có thể đọc được và dễ nhận biết, bất kỳ sở thích nào của mọi người ... – mwjackson

Trả lời

14

‘=’ không phải là ANSI SQL hợp lệ, do đó bạn sẽ gặp khó khăn nếu bạn muốn chạy ứng dụng của mình trên một DBMS khác.

(Đó là khi hình thức ANSI được sử dụng nhưng không bắt buộc 'AS' được bỏ qua tôi thấy kết quả khó đọc, cá nhân.)

+0

Điểm hợp lệ, nhưng tôi cho rằng sự cải thiện khả năng đọc trong 95% trường hợp vượt quá 5 % các trường hợp mà bạn sẽ cần phải thực hiện một truy vấn đối với một DBMS khác nhau – mwjackson

+1

Bản án dễ đọc là khá chủ quan! :-) Tần suất bạn cần một DBMS khác nhau phụ thuộc vào loại dự án; nếu đó là một công cụ trong nhà cho một công ty định hướng MS dựa vào các phần mở rộng T-SQL có thể thích hợp; cho một dự án mã nguồn mở, nó sẽ không thực sự phù hợp. – bobince

+1

+1 Đây sẽ là lý do duy nhất tại sao tôi sẽ xem xét thay đổi phong cách viết SQL của tôi nhưng tôi sẽ trì hoãn cho đến khi sự kiện xảy ra (có thể là không bao giờ). –

2

Tôi thích sử dụng AS= được sử dụng trong câu lệnh ở đâu và có thể gây nhầm lẫn trong truy vấn dài.

+1

Chỉ khi bạn đang thực hiện các lựa chọn lồng nhau bên trong mệnh đề lựa chọn của bạn hoặc không định dạng truy vấn của bạn một cách độc đáo, cả hai đều là mối quan tâm lớn hơn nhiều trong quan điểm của tôi – mwjackson

+0

Tôi đã định dạng truy vấn theo các cách khác nhau bằng cách sử dụng '=' và 'AS'. Sau một thời gian dài làm việc với SQL Server, tôi thích sử dụng '='. Trong trường hợp của tôi, bởi vì một số cột yêu cầu logic rộng rãi và có thể xác định vị trí 'AS' có thể phức tạp trong một số trường hợp, trong khi '=' sẽ luôn luôn sau ALIAS. Như @mwjackson nói, tất cả phụ thuộc vào cách bạn định dạng mã, và theo như ý kiến ​​cá nhân của tôi là có liên quan. Tôi đã đi đến câu hỏi này chỉ vì tôi muốn xác định hiệu suất giữa cái này và cái kia, nhưng khả năng đọc vẫn còn chủ quan. – JotaPardo

8

Tôi sẽ không sử dụng nó đơn giản vì nó trông quá nhiều như hoạt động bình đẳng. 'AS' rõ ràng là nó không mơ hồ với tôi.

Nó giống như không sử dụng chữ hoa thường trong sql, tôi thấy khó đọc hơn.

2

Tôi thích sử dụng cả hai loại này. Tôi chỉ cung cấp tên của cột mà không có bất kỳ từ khóa nào ở giữa

SELECT MAX(price_column) maximumprice FROM prices 
+0

Tôi làm điều này là tốt, do lịch sử cá nhân đau đớn đằng sau sử dụng "như" trong các truy vấn.I * luôn luôn * đảm bảo rằng các tên bí danh nổi bật, thông qua việc sử dụng không gian màu trắng và (khi có nhiều hơn một) cột căn chỉnh. –

0

** thậm chí tôi thích sử dụng 'as' thay vì '='. '=' làm cho sự nhầm lẫn trong mã.

ví dụ:

column as alias1 
+5

... và điều này có nghĩa là rất nhiều cho nhân loại? ;) – Scoregraphic

+0

Tôi thích sử dụng '='. Trong trường hợp của tôi, bởi vì một số cột yêu cầu logic rộng rãi và có thể xác định vị trí 'AS' có thể phức tạp trong một số trường hợp, trong khi '=' sẽ luôn luôn sau ALIAS. Tất cả phụ thuộc vào cách bạn định dạng mã và theo ý kiến ​​cá nhân của tôi. Tôi đã đi đến câu hỏi này chỉ vì tôi muốn xác định hiệu suất giữa cái này và cái kia, nhưng khả năng đọc vẫn còn chủ quan. – JotaPardo

10

Để đưa vào một số đối trọng, tôi thích sử dụng =.

Nếu tôi là người tiêu dùng kết quả truy vấn theo một cách nào đó, tôi thấy thuận tiện hơn để xem những cột nào mà người tiêu dùng có thể sử dụng.

tôi thích điều này

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 

qua

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 

chỉ 2c của tôi này.

+1

+1: Tôi đã làm việc trên một vài dự án mà việc sử dụng "alias = ..." và "... as alias" được trộn lẫn giữa các thủ tục được lưu trữ khác nhau - và đôi khi cùng một thủ tục được lưu trữ. Tôi tìm thấy "alias = ..." dễ đọc hơn nhiều và dễ viết hơn nhiều. Đặc biệt, tôi thấy rằng các biệt hiệu sắp xếp đúng bằng cách sử dụng "... {tab} {tab} {tab} làm bí danh" có thể đọc được nhiều hơn một chút, nhưng việc bảo trì là một cơn ác mộng. – Juliet

4

= có thể bị nhầm lẫn với nhiệm vụ và bình đẳng; trên thực tế, mẫu I thực sự không thích là khi nó trông giống như một chuỗi (thường là khi không gian đang tham gia):

somecolumn as 'alias 1' 

hoặc

'alias 1' = somecolumn 

tôi xa thích các ký hiệu thay thế:

somecolumn as [alias 1] 
+0

Có khả năng gây nhầm lẫn nhưng chỉ khi bạn đang thực hiện các lựa chọn lồng nhau bên trong mệnh đề lựa chọn của bạn, hoặc không định dạng truy vấn của bạn một cách độc đáo, cả hai đều là mối quan tâm lớn hơn trong quan điểm của tôi – mwjackson

+0

Ký hiệu khác: ´ [alias 1] = somecolum´ – JotaPardo

4

"=" chỉ đơn giản là mơ hồ.

Nếu bạn thụt lề để thoát ra từng mệnh đề chọn ...

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


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

Trong khi tôi không đồng ý rằng = là mơ hồ, đây là một lựa chọn tốt đẹp ... – mwjackson

+1

Thụt lề tốt thực sự giúp dễ đọc. Nhưng tôi luôn căn chỉnh "AS" ở bên phải ngay trước bí danh. Nó dễ đọc hơn. –

2

Bí danh cột được khai báo bằng cú pháp "=" không còn được dùng trong SQL Server 2008 và không được hỗ trợ trong phiên bản tiếp theo. Xem MSDN article.

+3

Điều đó chỉ đề cập đến việc không sử dụng * 'string_alias' = expression *, ** not ** * column_alias = expression * mà vẫn có sẵn –

3

Hình thức postfix bí danh (có hoặc không có "AS") là phù hợp giữa bí danh cột và bảng. Cá nhân, tôi muốn một tùy chọn để thực thi việc sử dụng "AS", và sau đó bạn sẽ không có tình trạng này:

select 
    columnA, 
    columnB 
    columnC 
from 
    table 

tạo ra một kết quả thiết lập với hai cột thay vì dự kiến ​​3.

tôi cũng muốn nói rằng với tiền tố "=" hình thức, nó có thể làm cho nó khó khăn hơn để đọc nếu bạn đang trộn có được một tập hợp kết quả và phân công biến:

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

trong khi tôi có một sở thích cho việc sử dụng AS, điều thực sự quan trọng ở đây là có một tiêu chuẩn của công ty và tuân theo nó. Nếu nhiều người của bạn sử dụng AS hơn = thì mọi người nên sử dụng nó. Tiêu chuẩn mã hóa là những gì làm cho nó dễ dàng hơn để duy trì mã không phải là tiêu chuẩn cụ thể mà bạn chọn. Nếu mọi người sử dụng cùng một thứ, thì mắt bạn sẽ quen với việc chọn nó.

3

Ba cách tôi biết để bí danh:

  1. TableColumn AS MyAlias ​​
  2. MyAlias ​​TableColumn
  3. MyAlias ​​= TableColumn

Re: 1), tôi thích điều này vì nó là mã tự ghi nhiều nhất (IMO) và cho phép tôi tìm kiếm AS nếu tôi cần tìm bí danh.

Re: 2), Đây là lựa chọn thứ hai của tôi, nhưng không có AS, tôi không bao giờ chắc chắn đây có phải là lỗi cắt và dán hay không, đặc biệt là trong các truy vấn dài, có định dạng sai.

Re: 3), tôi không thích điều này bởi vì a) nó trông giống như một bài tập, và b) nó pha trộn trong quá nhiều với ON khoản và CASE báo cáo

Vì vậy, lá phiếu của tôi là sử dụng AS từ khóa cho bí danh của bạn.

+0

Có phải '=' giao hoán trong SQL đối với các bí danh không? Tôi chưa bao giờ thấy nó được sử dụng như bạn mô tả thay vì 'MyAlias ​​= TableColumn'. –

+0

Bạn nói đúng, tôi đã transposed nó, cố định ngay bây giờ. – RedFilter

0

Bạn không cần phải sử dụng một trong hai

Drop AS và sử dụng

SELECT originalname alias 
FROM 
    tablename 
2

Tôi thích

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

tôi thấy AS không phải là dễ dàng đáng chú ý so với a = dấu (Tôi có thể phát hiện = nhanh hơn AS)

Ngoài ra khi một người chỉ thực hiện SELECT bí danh cột, đôi khi nó ' s khó hiểu để biết cái nào là cái nào :)

1

Tôi không may mắn như những người đã đăng ở đây. Mã tôi làm việc với thường được viết bởi người khác và hiếm khi không có các câu lệnh CASE hoặc các phép tính khác, các phép nối hoặc logic gây ra một mục duy nhất để trải rộng trên một vài hàng của kịch bản lệnh T_SQL.

Sử dụng ký hiệu bằng nhau thay vì 'AS' sẽ dễ đọc hơn nhiều. Với một dấu bằng, bạn biết tên bí danh mà bạn đang tìm kiếm nằm ở vị trí đầu tiên của hàng. Khi 'AS' được sử dụng và T_SQL kéo dài nhiều dòng, tên bí danh có thể ở bất kỳ đâu.

Tìm kiếm bí danh 'Mục' càng xa, dễ dàng hơn khi sử dụng dấu bằng khi sử dụng 'AS'.

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 

Bây giờ hãy tưởng tượng có nhiều hơn 5 lần số lượng mã ở đây và cần tìm bí danh 'Mục'.

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 

'AS' vs '=' không phải là tùy chọn cố ý và tùy ý. Tôi không phóng đại khi tôi nói đã có lần phải mất vài phút để tìm tên bí danh mà tôi đang tìm kiếm vì tác giả của tập lệnh mà tôi hiện đang phụ trách duy trì không sử dụng dấu bằng bằng bí danh của họ. Tôi không thể nghĩ ra một sự lãng phí thời gian, tiền bạc và tài nguyên lớn hơn việc trả tiền cho một chuyên gia CNTT để tìm kiếm các tên bí danh trong mã !! Có câu trả lời đúng và sai nếu bạn quan tâm đến khả năng bảo trì, khả năng đọc và hiệu quả. Công việc của bạn là cung cấp giá trị kinh doanh, không dành cả ngày để tìm kiếm Waldo!

Các vấn đề liên quan