タグ付けされた質問 「syntax」

その言語に対して正しく構成されていると見なされる記号の組み合わせを定義する一連の規則。

2
テーブル値関数でテーブルを結合する方法は?
ユーザー定義関数があります: create function ut_FooFunc(@fooID bigint, @anotherParam tinyint) returns @tbl Table (Field1 int, Field2 varchar(100)) as begin -- blah blah end 次のように、これを別のテーブルに参加させたいと思います。 select f.ID, f.Desc, u.Field1, u.Field2 from Foo f join ut_FooFunc(f.ID, 1) u -- doesn't work where f.SomeCriterion = 1 言い換えると、1であるすべてのFooレコードについて、の入力に対してから返されるおよびの値とともに、およびSomeCriterionを表示する必要があります。Foo IDDescField1Field2ut_FooFuncFoo.ID これを行うための構文は何ですか?

3
COALESCEとISNULLのパフォーマンスの違いは?
多くの人がISNULLの代わりにCOALESCE関数を使用するのを見てきました。インターネット検索から、COALESCEはANSI標準であることがわかったので、COALESCEを使用するときに何を期待するかを知っているという利点があります。ただし、ISNULLの方がわかりやすいため、ISNULLの方が読みやすいようです。 ISNULLは、データベースサーバーや言語によって動作が異なるため、ややこしいこともわかります。 私の考えでは、そのすべてがスタイルと標準に要約されています。スタイルが主観的であることを考えると、ISNULLではなくCOALESCEを使用する(またはその逆)理由はありますか?具体的には、一方のパフォーマンスが他方より優れていますか?

6
PostgreSQLでVALUESを使用して一時テーブルを作成する方法
私はPostgreSQLを学びWITH、デバッグ目的で通常のテーブルの代わりに使用できる一時テーブルまたは宣言を作成する方法を見つけようとしています。 CREATE TABLEのドキュメントを見VALUESて、クエリとして使用できると書かれていますが、例を示していません。VALUESリンクされている条項のドキュメントにも例はありませんか? そこで、次のような簡単なテストを作成しました。 DROP TABLE IF EXISTS lookup; CREATE TEMP TABLE lookup ( key integer, val numeric ) AS VALUES (0,-99999), (1,100); しかし、PostgreSQL(9.3)は、 「AS」またはその近くの構文エラー 私の質問は: 上記のステートメントを修正するにはどうすればよいですか? どのようにそれを使用するように適応させることができWITH blockますか? 前もって感謝します。

4
MySQLはUTCタイムをデフォルトのタイムスタンプとして設定します
デフォルト値が現在のUTC時間であるタイムスタンプ列を設定するにはどうすればよいですか? MySQLはUTC_TIMESTAMP()UTCタイムスタンプに関数を使用します。 mysql> SELECT UTC_TIMESTAMP(); +---------------------+ | UTC_TIMESTAMP() | +---------------------+ | 2012-07-01 11:36:35 | +---------------------+ 1 row in set (0.00 sec) だから私は試しました: CREATE TABLE `blah` ( `creation_time` TIMESTAMP DEFAULT UTC_TIMESTAMP, ... その他のバリエーション、、などUTC_TIMESTAMP()が成功していません。


1
(NOLOCK)vs NOLOCK
次のようなクエリを見つけたとき、いくつかのブロッキングを調査していました。 SELECT SomeField FROM SomeTable NOLOCK 私はこれを見てNOLOCK、他のクエリ、この場合はDELETEステートメントをブロックする方法を知りました。私は使用しているロックを簡単に調べましたがsp_lock、ここに私が見たものがあります: DB S GRANT TAB IS GRANT PAG S GRANT さて、私の理解では、これNOLOCKはスキーマ安定性ロックのみを取得することになっていますが、なぜISロックを取得したのですか? 私の好奇心がそそられました。私はBOLを見て、それを使用する2つの方法がWITH (NOLOCK)あり、廃止予定(NOLOCK)であることがわかったので、それらを試してみることにしました。次のクエリを実行した後、実行しましたsp_lock: SELECT SomeField FROM SomeTable WITH (NOLOCK) DB S GRANT TAB Sch-Sグラント SELECT SomeField FROM SomeTable (NOLOCK) DB S GRANT TAB Sch-Sグラント 案の定、スキーマ安定性ロックがあります。だから私の質問はこれです:ここで何が起こっているのですか?NOLOCKを使用するために受け入れられ構文のいずれかである場合WITH (NOLOCK)や(NOLOCK)、なぜクエリのエラーは、それが単なるを実行したときに出ませんNOLOCK(括弧なし)?サポートされている場合、ISロックを取得するのはなぜですか?ここに何が欠けていますか?私はオンラインで答えを探していましたが、今のところ不足しています。 これを2008R2と2012の両方でテストしました。

2
Oracleで変数を宣言して使用するにはどうすればよいですか?
私の主なスキルはSQL Serverにありますが、Oracleクエリのチューニングを行うように頼まれました。次のSQLを作成しました。 declare @startDate int select @startDate = 20110501 そして、私はこのエラーを受け取ります: declare @startDate int select @startDate = 20110501 Error at line 1 ORA-06550: line 1, column 9: PLS-00103: Encountered the symbol "@" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> …

2
特異なOracle外部結合構文のケース
Oracleの外部結合構文からSQL標準の外部結合構文に移植されることになっているクエリで、次のことがわかりました。 SELECT ... FROM A, B, C, D, E WHERE A.A_ID = B.A_ID AND B.B_ID = C.A_ID(+) AND B.B_KEY = C.B_KEY(+) AND C.C_ID = D.C_ID(+) AND B.A_ID = E.A_ID(+) AND B.B_KEY = E.B_KEY(+) AND 'CONSTANT' = C.X_ID(+) 現在、外部結合構文の翻訳は通常非常に機械的なプロセスですが、その最後の行は私を困惑させました。どういう意味ですか?どのような効果がありますか?
16 oracle  join  syntax 

1
SQL Serverがオブジェクト名とシステムプロシージャに渡される文字列を交換できる理由
オブジェクト名をシステムストアドプロシージャに渡すことが合法である原因は何sp_helptextですか? オブジェクト名を文字列に変換するメカニズムは何ですか? 例えば -- works sp_helptext myproc sp_helptext [myproc] sp_helptext [dbo.myproc] -- and behaves the same as a string sp_helptext 'myproc' sp_helptext 'dbo.myproc' -- does not work sp_helptext dbo.myproc -- Msg 102, Level 15, State 1, Line 1 incorrect syntax near '.' -- an additional case that does not work. …

2
OracleからSQL Serverにデータを移動する最も簡単な方法は何ですか?
当社の製品の1つは、データベースバックエンドとしてOracleとSQL Serverの両方をサポートしています。OracleバックエンドからMicrosoft SQL Serverに切り替えることを希望するお客様がいますが、これは私たちにとって典型的な移行ではありません。 すべてのデータをOracleスキーマ全体からSQL Serverデータベースに取得する最も簡単な方法は何ですか? スキーマにはプレーンな古いテーブルのみが含まれ、空想的なものは何もありません。手作業で移行しても問題ないストアドプロシージャが1つまたは2つある場合があります。 OracleのSQLDeveloperを使用してテーブルデータをCREATEand INSERTステートメントとしてエクスポートできますが、これらはSQL Serverで使用される構文と一致せず、構文エラーを手動で修正する必要がありません。

2
CTEをセミコロンで開始する必要があるのはなぜですか?
Aaron Bertrandが数値テーブルの代わりにCTEを使用することを提案しているStackOverflowの投稿を見ているところです。私の質問は、なぜCTEの最初の行がセミコロンで始まるのですか? ;WITH n AS (SELECT TOP (10000) n FROM (SELECT n = ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2 ) AS x ORDER BY n ) SELECT n FROM n ORDER BY n; -- look ma, no gaps! これは、WITHステートメントが以前のSELECT何かに解析されないようにするためですか?WITHの前にセミコロンを使用することについて、SQL Server 2005 BOLには何も表示されません。
13 sql-server  t-sql  cte  syntax 

1
Transact-SQLの集計関数の後に等号(=)を配置できますか?
私はこのようなスクリプトに遭遇しました: set @sum = sum = (case when somecol1 is null then DATEDIFF(d,[somecol2],somecol3) else 0 end) 2番目のキーワードの合計の後の等号(=)の意味が理解できません。クエリを実行すると、等号がある場合とない場合の両方でエラーが表示されません。 キーワードの後に​​等号を付ける目的を知りたいsum。それは間違いですか? ありがとう

1
OUTER JOIN内にネストされたINNER JOINの構文とクエリ結果
TLDR; 2つの実行プランを見ると、どちらが良いのか簡単な答えはありますか?意図的にインデックスを作成しなかったので、何が起こっているのかを簡単に確認できます。 異なる結合スタイル(つまり、ネストされたものと従来のもの)の間のクエリパフォーマンスの違いを発見した私の以前の質問をフォローアップして、ネストされた構文もクエリの動作を変更することに気付きました。次の2つのクエリについて考えます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m JOIN dbo.Manufacturers n -- <-- Nested INNER JOIN ON n.ManufacturerID = m.ManufacturerID ON m.ModelID = a.ModelID これは、Modelsテーブルにない ModelIDを持つ自動行を含めるために、製造元を結合する必要はありません。 従来の構文を使用して、結合をManufacturesから外部結合に変更する必要があります。ただし、これによりクエリプランが変更されます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m ON m.ModelID = a.ModelID LEFT JOIN …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.