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

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


2
ビューでNOT NULL計算列がNULL可能と見なされるのはなぜですか?
私はテーブルを持っています: CREATE TABLE [dbo].[Realty]( [Id] [int] IDENTITY(1,1) NOT NULL, [RankingBonus] [int] NOT NULL, [Ranking] AS ([Id]+[RankingBonus]) PERSISTED NOT NULL .... ) そしてビュー: CREATE View [dbo].[FilteredRealty] AS SELECT realty.Id as realtyId, ... COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as Wgs84X, COALESCE(realty.Wgs84Y, ruian_cobce.Wgs84Y, ruian_obec.Wgs84Y) as Wgs84Y, realty.Ranking, ... FROM realty JOIN Category ON realty.CategoryId = …

4
ゼロ行が一致する場合でも、SELECTが定数値を返すようにする
次の選択ステートメントを検討してください。 SELECT *, 1 AS query_id FROM players WHERE username='foobar'; プレーヤーの他の列query_idとともに値を1持つ列を返します。 selectが一致する行を検出しなかった場合でも、上記のSQLに少なくともquery_idofを返させるにはどう1すればよいですか? ところで、それはPostgreSQL 8.4です。


4
CONCAT MySQL内のNULL値を除外する方法は?
これがある場合-taddはAddressテーブルです: CONCAT(tadd.street_number, ' ', tadd.street_name,', ', tadd.apt_number,', ', tadd.city,', ', tadd.postal_code,', ', tadd.country) AS 'Address' apt_numberが存在しない場合、除外する方法はありますか? 私は考えていました: WHERE tadd.apt_number IS NOT NULL しかし、それはでそれらの行のみを返しますapt_number、そして何かがうまくいくとしても、その余分なコンマをどのように処理しますか。 重複している場合は、コメントにリンクを投稿してください。
14 mysql  null  concat 

2
NULL値に関するPostgreSQL UPSERTの問題
Postgres 9.5の新しいUPSERT機能の使用に問題があります 別のテーブルからデータを集計するために使用されるテーブルがあります。複合キーは20列で構成され、そのうち10列はNULL可能です。以下に、特にNULL値を使用して、私が抱えている問題のより小さなバージョンを作成しました。 CREATE TABLE public.test_upsert ( upsert_id serial, name character varying(32) NOT NULL, status integer NOT NULL, test_field text, identifier character varying(255), count integer, CONSTRAINT upsert_id_pkey PRIMARY KEY (upsert_id), CONSTRAINT test_upsert_name_status_test_field_key UNIQUE (name, status, test_field) ); このクエリの実行は、必要に応じて機能します(最初の挿入、その後の挿入は単純にカウントを増やします)。 INSERT INTO test_upsert as tu(name,status,test_field,identifier, count) VALUES ('shaun',1,'test value','ident', 1) ON CONFLICT …


3
DISTINCT FROMは、何らかの方法ですべてまたはすべてと組み合わせることができますか?
組み合わせのPostgresの道であるIS DISTINCT FROMとANYかと同じ結果を得るための他のいくつかのきちんとした方法は? select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo <> any(array[null, 'A']); count ------- 1 (1 row) select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo is distinct from any(array[null, 'A']); …


1
「WHERE field IS NULL」でクエリにインデックスを付ける方法は?
多数の挿入を含むテーブルがあり、フィールド(uploaded_at)の1つをに設定していNULLます。次に、定期タスクがすべてのタプルを選択し、WHERE uploaded_at IS NULLそれらを処理して更新し、uploaded_at現在の日付に設定します。 テーブルにインデックスを付けるにはどうすればよいですか? 次のような部分インデックスを使用する必要があることを理解しています。 CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL またはそのようなsmth。しかし、常にフィールドにインデックスを付けることが正しい場合、私は少し混乱していますNULL。または、bツリーインデックスを使用することが正しい場合。ハッシュはより良いアイデアのように見えますが、廃止されており、ストリーミングホットスタンバイレプリケーションを介してレプリケートされません。どんなアドバイスも大歓迎です。 私は次のインデックスで少し実験しました: "foo_part" btree (uploaded_at) WHERE uploaded_at IS NULL "foo_part_id" btree (id) WHERE uploaded_at IS NULL クエリプランナーは常にfoo_partインデックスを選択するようです。explain analyseまた、foo_partインデックスの結果が若干良くなります: Index Scan using foo_part on t1 (cost=0.28..297.25 rows=4433 width=16) (actual time=0.025..3.649 rows=4351 loops=1) Index Cond: (uploaded_at …

3
大きなテーブルの列をNON NULLに変更する速度を上げる
最近、5億行に近いテーブルにNULL可能ビット列を追加しました。列にはデフォルトはありませんが、すべての挿入で0または1の値が指定されています。1回限りのルーチンを実行して、既存のすべての行に0または1を割り当てます(小さなバッチで行を更新します)。これで、すべての行の列に0または1が表示されます。 ビット列をnull不可にしたいのですがALTER TABLE t1 ALTER COLUMN c1 bit not null、で実行しようとしたときに3分実行され、テーブルへのすべての読み取りをブロックしていたため停止しましたが、完了するまでに時間がかかると思われました。それほど時間がかからない可能性はありますが、利用できないリスクを冒すことはできません。ロールバック自体は6分かかりました。 完了するまでに何時間もかかることなく、列をnull不可にする方法について提案はありますか? さらに、ALTER TABLE ALTER COLUMN開始してからキャンセルしたステートメントが完了するまでにかかる時間を見積もる方法はありますか? SQL Server 2017 Web Editionを使用しています。

4
OracleでNULL可能数を使用しない理由は?
私たちの会社は、共同プロジェクトのために他のソフトウェア会社とインターフェイスをとっており、特定の値を表示しない場合は、-5000(任意のセンチネル値)を渡す必要があると言われました。その理由は、(以前の)Oracle開発者の推奨により、Oracleデータベースの数値列がnull値をサポートしていないためです。また、この会社はコードの大部分をVB6で記述しています(VB.NETへの移行はゆっくりと進んでおり、これもまた別の日のトピックです...)。純粋な好奇心から、この推奨事項の正当な理由はありますか?私の側に何も考えられません。 ---編集 すべてのフィードバックをありがとう。CodeProject.com(link)で同じ質問を投げかけ、非常によく似たフィードバックを受け取りました。この方法が外部キーに関連していることを正当化できる可能性があるのは唯一のようであり、システム内のどこでも外部キーを使用しないと述べることができます。この決定をした開発者(私は以前その会社で働いていた)は、私よりもはるかに多くの経験を持っているので、ris笑が起こる前に、これに対する正当な理由がないことを確認したかった。

2
NULL列をNOT NULLにすばやく変更する
何百万もの行とNULL値を許可する列を持つテーブルがあります。ただし、現在、その列にNULL値を持つ行はありません(クエリでこれをかなり迅速に確認できます)。ただし、コマンドを実行すると ALTER TABLE MyTable ALTER COLUMN MyColumn BIGINT NOT NULL; クエリは比較的長い時間かかります。実際には10〜20分かかり、チェック制約を追加する場合の2倍以上の時間がかかります。特にその列にNULL値を持つ行がないことを知っているので、その列のテーブルのメタデータを即座に更新する方法はありますか?

3
WHERE句の変数でnullチェックを行う方法は1回だけですか?
次のような大きなテーブルに対するクエリがあります。 declare @myIdParam int = 1 select * from myTable where (@myIdParam is null or myTable.Id = @myIdParam) where句には、このような同様の条件がいくつかあり、結合も多数ありますが、これは要約です。 事実上、@ myIdParamがnullの場合、このパラメーターを使用して結果を制限する必要はありません。 私はDBプロではありませんが、私のテストから、このNULLチェックはすべてのレコードに対して行われ、どのような方法でも最適化されていないようです。 nullチェックを削除し、パラメーターがnullではないと想定すると、クエリは即座に返されます。それ以外の場合は、最大10秒かかります。 これを最適化する方法があるので、チェックは実行時に一度だけ行われますか?
11 sql-server  null 

3
2つのNULL可能列には値が必要です
説明なしの質問: とにかく、常に1が値を必要とする2つのnull値の制約を持つことはありますか?たとえば、2つの日付列はどちらもnullですが、値が必要な1 つ以上の列があります。 問題の説明: Expenseというテーブルがあるとします そして2つの日付があります: prevision_expense_expiration_date DATE NULLABLEense_payment_date DATE NULLABLE これら2つの列のロジックは次のとおりです。 私は何かを購入しましたが、電話代のような日付で支払う必要があることはわかっています。私はこれをexpense_payment_dateとともに費用として入力します。この日付は支払い予定日ですが、請求書の有効期限のような実際の支払い日ではありません。 他の状況では、あるサービスのギフトカードを販売しています。私があり、サービスが私のクライアントに転送私のプロバイダに購入の費用を持っているだけで、クライアントはカードを引き換える場合。したがって、ギフトカードには有効期限があります。ギフトカードが有効な期間の費用として挿入せずに、その「費用」を予測します。ギフトカードの有効期限が切れた場合、その「費用」はアカウントに入力しないでくださいシステム。 prevision_expenseとconfirm_expenseと呼ばれる2つの同等のテーブルを使用できることはわかっていますが、適切に聞こえないため、同じテーブルに2つの日付があり、nullを指定できますが、常に必要になるように制約または何かしたいです。 別の可能な戦略があります: payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL したがって、この場合、日付がプロビジョニングの場合、ブール値は1になります。それ以外の場合は、0になります。null値はなく、すべて良好です。ただし、最初に予測日があり、THEN(2日後と言います)にその費用の確認日があるときに両方の値を保存するオプションが必要な場合を除きます。この場合、戦略2では、そのオプションはありません。 私はデータベース設計ですべてを間違っていますか?:D

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.