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

欠落、不明、または適用不可能なデータを表すために使用されるデータベースの概念。

3
nullにできないフィールドに対してPostgreSQLでNOT NULLを指定しないことの結果は何ですか?
私はアプリケーションを持っています(データはPostgreSQLに格納されています)。テーブルのフィールドの大部分は常にnullではありませんが、これらのテーブルのスキーマはこれを強制しません。たとえば、次の偽のテーブルを見てください。 CREATE TABLE "tbl" ( "id" serial, "name" varchar(40), "num" int, "time" timestamp PRIMARY KEY ("id"), UNIQUE ("id") ); またname、num、time明示的として記載されていないNOT NULL彼らが実際に執行はアプリケーション側で起こるので、。 私の感覚では、それを変更する必要があると感じていますが、反対に、アプリケーションレベルでは、null値がここに表示されないようにし、他の誰も手動でテーブルを変更しないようにします。 私の質問は次のとおりです。明示的なNOT NULL制約? 私たちは適切なコードレビュープロセスと適度に優れたドキュメントを持っているので、新しい人がこの制約を破る何かをコミットする可能性は、変更を正当化するには実際には十分ではありません。 これは私の決定ではないので、これがまさに私が他の正当化を求めている理由です。私の意見では、何かがnullになり得ず、データベースで何かがnullでないことを指定できる場合、それを行うだけです。特に変更が非常に簡単な場合。

1
なぜ列型にNULLをキャストする必要があるのですか?
大量の更新を行うためのコードを生成し、次のようなSQLを生成するヘルパーがあります。 (アクティブフィールドとコアフィールドの両方がタイプですboolean) UPDATE fields as t set "active" = new_values."active","core" = new_values."core" FROM (values (true,NULL,3419), (false,NULL,3420) ) as new_values("active","core","id") WHERE new_values.id = t.id; しかしそれは失敗します: ERROR: column "core" is of type boolean but expression is of type text ::booleannullに追加することで機能させることができますが、奇妙に思えますが、なぜNULLは型と見なされますTEXTか? また、どの型にNULLをキャストするかを知るためにコードを再調整する必要があるため、キャストするのは少し難しいです(現在、列と値のリストは、JSONオブジェクトの単純な配列から自動生成されています)。 。 なぜこれが必要なのですか?NULLのタイプを知るために生成コードを必要としない、よりエレガントなソリューションがありますか? それが適切であれば、Node.JSでsequelizeを使用してこれを行いますが、Postgresコマンドラインクライアントでも同じ結果が得られます。
10 postgresql  null  cast 

3
列のnull値と非null値をカウントする
MySQLの同じ列でnullとnot nullをカウントして取得する方法は? mytable --------------------------------------------------- id | name | visited | registDate | --------------------------------------------------- 1 | george | NULL | 2014-04-01 | --------------------------------------------------- 2 | Thomas | NULL | 2014-04-15 | --------------------------------------------------- 3 | Wilfred | 1 | 2014-04-24 | --------------------------------------------------- 4 | paul | 1 | 2014-04-10 | --------------------------------------------------- 5 …
10 mysql  count  null 

1
SPARSEを追加すると、テーブルがはるかに大きくなります
約5m行の汎用ログテーブルがあります。 イベントタイプを格納する「厳密に型指定された」フィールドと、イベントに関連するデータを含む一連の「緩やかに型指定された」列があります。つまり、これらの「緩やかに型付けされた」列の意味は、イベントの型によって異なります。 これらの列は次のように定義されます。 USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …

2
SQL Serverがインデックス付きビューの列がNULL可能ではないことを認識できるようにするにはどうすればよいですか?
SQL Server 2008で次のインデックス付きビューが定義されています(テスト目的でgistから作業スキーマをダウンロードできます)。 CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id、currency_id、およびtransaction_amountすべてのように定義されているNOT NULLの列dbo.transactions。ただし、Management Studioのオブジェクトエクスプローラーでビュー定義を見ると、ビューの両方の列balance_amountと-able列transaction_countとしてマークさNULLれています。 私はいくつかのディスカッションを調べましたが、これはそれらの中で最も関連性が高く、SQL Serverがビュー列が常にであることをSQL Serverが認識するのに役立つ可能性のある関数のシャッフルを示唆していますNOT NULL。ただし、インデックス付きビューでは集約関数の式(たとえば、ISNULL()over …

2
nullまたは空のテーブル値パラメーターを確認するにはどうすればよいですか?
ストアドプロシージャ(SS2k8)があり、テーブル値パラメーターがいくつかあり、それらがnullまたは空になる場合があります。このStackOverflowの投稿を見たところ、null /空のTVPは呼び出しパラメーターリストから単に削除する必要があると述べています。私の問題は、「IF(@tvp IS NULL)」がプロシージャの作成に失敗し、「スカラー変数「@tvpを宣言する必要があります」というメッセージが表示されるため、ストアドプロシージャ内の空またはnullを確認する方法を理解できないことです。TVPでSELECT COUNT(*)を実行してゼロを確認する必要がありますか? コードの抜粋: CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS IF (@tvp IS NOT NULL) -- doesn't work BEGIN -- lots of expensive processing END ELSE BEGIN -- a little bit of cheap processing END ...

1
SQL ServerはNULLを固定長の列に格納できませんか?
オラクルの公式ドキュメントでこの声明に出くわしました。 Microsoft SQL Serverでは、可変長データ型の列のみがNULL値を格納できます。固定長データ型でNULLを許可する列を作成すると、列は自動的にシステムの可変長データ型に変換されます... SQL Serverのドキュメントでこれについて読んだことも、そのようなことを経験したこともありません。逆に、SQL Serverでは、固定長のデータ型(intやfloatなど、charも)が頻繁に使用され、NULL可能でも非常に効率的に格納されます。 このオラクル声明の背後にある理論的根拠はありますか?!

1
MySQLが数値列にNULLをロードする
MySQL 5.6.23、InnoDB コマンドを使用して文字区切りのテキストファイルからテーブルを読み込んでいます。この設定の文字であるLOAD DATA INFILEを含むすべてのフィールドで、テーブルにを配置します。一部の数値タイプにはこの動作がありますが、他の数値タイプには。私が使用しており、一部の列は適切に値を取得するため、固定行形式の問題ではありません。\NNULLNULL0FIELDS TERMINATED BYNULL これらは、テスト中に観察したタイプです。 INT挿入NULL秒 DECIMAL(x,0)挿入NULL秒 DECIMAL(x,y)挿入0.0秒 FLOAT挿入0秒 DOUBLE(x,y)挿入0.0秒 DOUBLE挿入0秒 問題の列はすべてで定義されDEFAULT NULLます。さまざまな関数がこれら0のをに変換できることを知っていNULLます。問題は、10進精度を処理できNULL、ロード時にs も挿入するデータ型があるかどうかです。 さらに、文字列、空の文字列、null値の違いに関する誤解に関する質問がたくさんあります。(例えば 実施例の 一例)、これは、問題ではないNULLのがあるとDECIMAL(X、3)のように定義された場合、私は不適切次いで、DECIMAL(X、0)として再定義し、同じ列に適切にロードされます。

1
NOT NULLで定義されたMySQL列はnullを許可しています
しばらく前にテーブルを作成し、そこにデータを追加し始めました。最近、新しい列(address)をNOT NULL新しい列の一部として追加しました。古い行(追加前)は依然としてnullであり、定義の一部として警告が作成されました。ただし、新しい列を含む新しい行はnullを挿入できます。 新しい列の追加前のnullは許可されていますか?もしそうなら、前にあったとしてもそれを許可しないようにMySQLに指示する方法はありますか? mysql> show create table my_table\G *************************** 1. row *************************** Table: my_table Create Table: CREATE TABLE `my_table` ( `entry_id` int(11) NOT NULL auto_increment, `address` varchar(512) NOT NULL, `follow_up_to` int(11) default NULL, PRIMARY KEY (`entry_id`), KEY `follow_up_to` (`follow_up_to`), CONSTRAINT `my_table_ibfk_1` FOREIGN KEY (`follow_up_to`) REFERENCES `my_table` (`entry_id`) ON UPDATE CASCADE …
8 mysql  null 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.