7

次のスクリプトがあり、国際標準に準拠するように変更したいと考えています。私は SQL-Server を使用していますが、可能な限り SQL の国際標準に従いたいと考えています。角括弧が標準であるとは思えません。二重引用符に置き換える必要がありますか?

標準ドキュメントのコピーを入手するためにお金を払わなくても、標準で要求されているとおりに書式設定およびレイアウトされたスクリプトの例を提供するリソースがインターネット上にありますか?

SELECT 
    a.UserAccountKey,
    SUM(ISNULL(b.[measure Y],0.0)) AS "measure Y",
    SUM(ISNULL(c.[measure Z],0.0)) AS "measure Z"
FROM 
    XXX a
    LEFT OUTER JOIN YYYY b ON
        a.UserAccountKey = b.UserAccountKey
    LEFT OUTER JOIN ZZZZ c ON
        a.UserAccountKey = c.UserAccountKey
GROUP BY
    a.UserAccountKey

編集

古典的な標準ではない私の唯一のわずかな好みは次のとおりです。これは AaronBertrand によって提唱されたもので、特にSELECT句に 20 または 30 のフィールドがある場合は、より読みやすいことに同意します。

SELECT 
    a.UserAccountKey,
    "measure Y"             = SUM(ISNULL(b."measure Y",0.0)),
    "measure Z"             = SUM(ISNULL(c."measure Z",0.0)),
    "measure longertitle"   = SUM(ISNULL(c."measure longertitle",0.0)),
    "me short"              = SUM(ISNULL(c."me short",0.0))
FROM 
4

4 に答える 4

7

に変更ISNULLCOALESCE、角括弧を に変更してから"検証します。

SELECT a.UserAccountKey,
       SUM(COALESCE(b."measure Y", 0.0)) AS "measure Y",
       SUM(COALESCE(c."measure Z", 0.0)) AS "measure Z"
FROM   XXX a
       LEFT OUTER JOIN YYYY b
         ON a.UserAccountKey = b.UserAccountKey
       LEFT OUTER JOIN ZZZZ c
         ON a.UserAccountKey = c.UserAccountKey
GROUP  BY a.UserAccountKey; 

QUOTED_IDENTIFIERこれは、それがONSQL Server にあることを確認する必要があることを意味します。

于 2013-02-05T10:11:33.600 に答える
2

優れたオンラインの無料T-SQLフォーマッターはhttp://www.tsqltidy.com/です。つまり、SQLServer用です。ファイアウォール管理者がSQLインジェクション攻撃について突然警告を受ける可能性があるので注意してください(一部のファイアウォールはサイトを攻撃に使用するのを間違えます)。それ以外の場合は、フォーマット機能を備えた商用ツール(SQL Complete(DevArt)およびSQL Prompt(Red Gate))があります。

「国際標準SQL」に関しては、それはそれ自身のブログサイトのようなものになるでしょう。どのANSI規格(1992、SQL3、...)およびどのレベルまで?

ただし、見積もりの​​作成に役立ちます。SETQUOTED_IDENTIFIERONを使用してください。SQLの前に、その後オフにします(SET QUOTED_IDENTIFIEROFF;)。つまり、データベース全体でスイッチをオンにする必要はありません。ただし、スペースと非標準文字を含む識別子を使用しないことをお勧めします(C#で「...作成したばかりの新しいオブジェクトタイプ〜()...」のようなコードを使用するのと同じように、あまり実用的ではありません)。

それは2つの答えと別の質問としてカウントされますか?

于 2013-02-05T18:48:17.023 に答える
1

さまざまなドキュメントとすべてを備えたSQL標準のリソースの優れたリストは次のとおりです。http: //gerardnico.com/wiki/language/sql/ansi

既存のコード用のt-SQLフォーマッターを探している場合は、ApexSQLリファクタリングもチェックしてください。これは、RedGateのSQLPromtに似た無料のSSMSプラグインです。

于 2013-02-25T12:16:45.047 に答える
0

もう 1 つの優れたリソースは SQL Cop です。これは、問題を特定し、ベスト プラクティスを提案する無料のツールです。

http://sqlcop.lessthandot.com/

于 2013-02-26T10:51:31.807 に答える