問題タブ [ansi-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
41718 参照

mysql - MySQLでは、数字を引用する必要がありますか?

たとえば、CLIからデータベースとテーブルを作成し、いくつかのデータを挿入します。

今、私はこれを行うことができ、これらの例は機能します(したがって、引用符は見た目には影響しません):

したがって、これらの例では、実際にmysqlにINTとして格納されている文字列で行を選択してから、INTであるに文字列を挿入しました。

なぜこれがここで機能するのかよくわかりません。INT列に文字列を挿入できるのはなぜですか?

すべてのMySQLデータ型を文字列として挿入できますか?

この動作は、さまざまなRDBMS間で標準ですか?

0 投票する
2 に答える
649 参照

sql - リレーションシップはクエリで重複レコードを生成します。DISTINCT は機能しません。他の解決策はありますか?

このポータルは初めてです。解決すべき非常に単純な問題があります。これは ANSI SQL に関連しています。BIRT を使用してレポートを作成しており、複数のテーブルからデータを取得しています。SQL 結合がどのように機能するかは理解していますが、完全ではないかもしれません。私は何時間もグーグルを調査しましたが、関連する答えが見つかりませんでした。

私の問題は、コード内の関係の 1 つが重複した結果を生成することです (同じ行がコピーされます - 重複します)。私はそれを解決しようと決心し、利用可能なすべてのタイプの結合を使用しました。この SQL の一部は既に作成されています。以下にコードを掲載します。私の問題に対する解決策の 1 つは、'DISTINCT' キーワードを使用することです。私はそれを使用しましたが、私の問題は解決しません。

誰でもそれに対する解決策を提案できますか?

サンプルコード:

テストデータはあまりありませんが、DISTINCTキーワードを使用した場合でも、以下のクエリの結果として1行が2回コピーされることがわかっています。私の問題はかなり具体的で一般的ではないことを知っていますが、誰かが提案する解決策は、同様の問題を抱えている他の人を助けるかもしれません.

0 投票する
0 に答える
1088 参照

sql - ANSI SQL 92: 文字の最後の発生を検索

最後の「/」文字に続くすべての文字を小文字に変更するには、ANSI SQL 92 ステートメントが必要です。

Sybase では、次のように記述します。

ANSI SQL 92 のすべての関数を見つけることができますが、最後のスラッシュを見つけるために使用する REVERSE 関数を除きます。

0 投票する
2 に答える
1704 参照

sql - 同じパラメータでselectまたはupdateを使用すると影響を受ける行数が異なる-PostgreSQL

同じJoinとWhere句を持つ2つのSQLステートメントがありますが、updateステートメントが変更されると(私の場合は80、それがすべての行です)、selectステートメントが異なる行数(私の場合は42)を与えるという問題がありますテーブルの)。

これが最初のものです(影響を受ける行数を確認するためにこれを使用します):

そしてここで2番目(これは仕事をします、それはテーブルクラスの1つのフィールドを更新します):

最初のステートメントと2番目のステートメントの違いは最初の行だけで、他のすべては同じです。

両方のステートメントで同じ数の行を取得するために何が変更されるかを誰かが知っていますか?

0 投票する
2 に答える
8718 参照

sql - SQL の NULL との比較

ANSI-92 SQL では、との比較がNULL「偽」と評価されることが義務付けられています。たとえば、次のようになります。

そのように比較できないため、どちらも行を返しません。NULL代わりに、述語IS NULLandIS NOT NULLを代わりに使用する必要があります。

調査によると、Oracle 1、PostgreSQL、MySQL、および SQLite はすべて ANSI 構文をサポートしています。そのリストに DB2 と Firebird を追加します。

ANSI_NULLSオフになっているSQL Server 以外に、ANSI 以外の構文をサポートしている RDBMS は何ですか?

1空の文字列全体 =NULL混乱にもかかわらず。

0 投票する
2 に答える
2665 参照

sql - SQL データベース間の相違点のリスト

ほとんどの SQL データベースは ANSI SQL 標準にある程度準拠していますが、

  1. 標準はあいまいで、一部の領域は解釈の余地があります (例: でのさまざまな操作の処理方法NULLsあいまいです) 。

  2. 一部のベンダーは、標準に完全に矛盾しているか、標準で定義されている機能を欠いているだけです (例: MySQL には、標準とその実装の相違点のリストがあります)。

  3. 一部のデータベースは、構成方法によって動作が異なりますが、構成を変更して同じように動作させることができます (たとえば、Oracle はデフォルトで大文字と小文字を区別する文字列比較を実行しますが、SQL Server は大文字と小文字を区別しません)。

  4. 標準の一部ではなく、名前は異なりますが、とにかく異なる RDBMS によって実装されている機能がいくつかあります (例: Oracle's LISTAGG= MySQL's GROUP_CONCAT)

複数のデータベースと互換性があると思われるものを作成しようとしているときに注意すべき、癖や落とし穴の包括的なリストを含むリソースはありますか?

0 投票する
3 に答える
194 参照

sql - この方法で AGG 関数を使用する SQL クエリを作成することは可能ですか?

次の集計関数があると仮定します。

  • AGG1
  • AGG2
  • AGG3
  • AGG4

次のように有効な SQL を (db にとらわれない方法で) 書くことは可能ですか?

ここで、COL1 ... COLN はクエリ対象のテーブル内の列であり、param1 ... paramX は AGG 関数に渡されるパラメーターです。

注: AGG1 と AGG2 は列として結果に返されます (ただし、HAVING CLAUSE には表示されず、AGG3 と AGG4 は HAVING CLAUSE に表示されますが、結果セットには返されません。

理想的には、ソリューションに対する DB にとらわれない回答が必要ですが、DB に縛られる必要がある場合は、PostgreSQL (v9.x) を使用しています。

編集

明確にするために、クエリで GROUP BY を使用することに反対しているわけではありません。私の SQL はあまり良くないので、上記の SQL の例は少し誤解を招く可能性があります。上記の疑似 sql ステートメントを編集して、私の意図をより明確にすることを願っています。

私が知りたかった主なことは、AGG 関数を使用した選択クエリが次のことができるかどうかでした。

  • HAVING 句で指定せずに、返された列に集計関数の値を含めます。
  • HAVING 句に集計関数が指定されていますが、結果セットには返されません。

私がこれまでに受け取った回答からすると、両方の質問に対する答えはイエスのようです。SQL を修正するために私がしなければならない唯一のことは、返される行が一意であることを確認するために GROUP BY 句を追加することです。

0 投票する
2 に答える
2298 参照

sql - ANSI SQL の CREATE TABLE ステートメントで名前付き列のデフォルトを作成する

可能であれば、CREATE TABLE ステートメントで、ANSI 準拠の方法で名前付きのデフォルト値を作成したい

通常 ALTER TABLE ステートメントで記述するように CONSTRAINT を追加しようとすると、失敗します (少なくとも SQL SERVER では、ANSI 準拠のステートメントを見つけることを望んでいることを強調しますが、さまざまなステートメントで機能することを望んでいます)。の Ado.NET DbConnections)。

例:

エラー:

「for」付近の構文が正しくありません。

0 投票する
2 に答える
6380 参照

sql - ANSI キャスト タイムスタンプ Netezza - Teradata から SQL を変換

私は現在、タイムスタンプ、日付データ型を必要な表現形式に変換するための Teradata FORMAT キーワードに相当する ANSI を知りません。これは、個々のデータベース固有の関数のように to_char や to_date を使用して実行できることはわかっていますが、将来的に実行中のコードをある DB から別の DB に簡単に移動できるように、ANSI で記述したいと考えています。以下は、Teradata、Netezza、Vertica などの両方で実行できるように、ANSI に変換しようとしている現在の Teradata SQL です。

現在、FORMAT 'HHMISS'、FORMAT '-9(5)' を ANSI に変換する方法がわかりません。この可能性のある ANSI と同等の関数に関するドキュメントはありますか? 助けてください。

0 投票する
2 に答える
2097 参照

sql - SelectCountSQLStatementsのANSIサポート

ANSI規格でサポートされているSelectCountSQLステートメントのリストがあるかどうか疑問に思っていますか?以下の3つのバリエーションは私が知っているものです。where句は以下の3つすべてで使用できますか?