คำถามติดแท็ก null

แนวคิดฐานข้อมูลที่ใช้เพื่อแสดงข้อมูลที่หายไปไม่ทราบหรือไม่เหมาะสม

2
SET NULL มีวัตถุประสงค์ในการลบ / อัพเดทข้อ จำกัด กุญแจต่างประเทศอย่างไร?
ฉันอาจจะใจแคบ แต่ถ้าฉันสร้างข้อ จำกัด คีย์ต่างประเทศและแถวได้รับการปรับปรุงหรือลบฉันจะสูญเสียการเชื่อมต่อนั้นถ้าคอลัมน์ของตารางลูกได้รับการตั้งค่าเป็นโมฆะ อะไรคือจุดประสงค์ของการเก็บแถวกำพร้าเหล่านี้ไว้โดยเจตนา?
15 foreign-key  null 

2
เหตุใดคอลัมน์ที่คำนวณเป็นค่า 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พร้อมกับคอลัมน์อื่น ๆ ของผู้เล่น วิธีการหนึ่งที่จะทำให้ผลตอบแทน SQL ข้างต้นอย่างน้อยquery_idของ1แม้ว่าเลือกพบว่าไม่มีแถวจับคู่? BTW คือ PostgreSQL 8.4

4
วิธีการยกเว้นค่า NULL ภายใน CONCAT MySQL
หากฉันมีสิ่งนี้ - 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และแม้ว่าบางสิ่งจะทำงานฉันจะจัดการกับเครื่องหมายจุลภาคพิเศษนั้นได้อย่างไร หากเป็นรายการซ้ำโปรดโพสต์ลิงก์ในความคิดเห็น
15 mysql  null  concat 

4
NULL มีชนิดหรือไม่?
แหล่งที่มาที่หลากหลาย (เช่นWikipedia , PSOUG ) ระบุว่า Oracle nullไม่มีประเภท มันเป็นเรื่องจริงเหรอ? แล้ว RDBMS อื่น ๆ ล่ะ?
14 datatypes  null 

1
วิธีการจัดทำดัชนีของแบบสอบถามด้วยฟิลด์ WHERE IS NULL คืออะไร
ฉันมีตารางที่มีจำนวนมากแทรกการตั้งค่าหนึ่งของฟิลด์ ( uploaded_at) NULLเพื่อ จากนั้นภารกิจตามระยะเวลาจะเลือกสิ่งอันดับทั้งหมดWHERE uploaded_at IS NULLประมวลผลและอัปเดตตั้งค่าuploaded_atเป็นวันที่ปัจจุบัน ฉันควรจัดทำดัชนีตารางอย่างไร ฉันเข้าใจว่าฉันควรใช้ดัชนีบางส่วนเช่น: CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL หรือว่าอย่างนั้น ฉันบิตสับสน NULLแต่ถ้ามันเป็นสิ่งที่ถูกต้องเพื่อดัชนีในเขตข้อมูลที่อยู่เสมอ หรือถ้ามันถูกต้องที่จะใช้ดัชนี b-tree Hash ดูเหมือนเป็นความคิดที่ดีกว่า แต่ล้าสมัยและไม่ได้รับการจำลองแบบผ่านการสตรีมการจำลองแบบ hot-standby คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ฉันได้ทดลองเล็กน้อยด้วยดัชนีต่อไปนี้: "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ดัชนี: …

2
ปัญหา PostgreSQL UPSERT ด้วยค่า NULL
ฉันมีปัญหากับการใช้คุณสมบัติใหม่ของ UPSERT ใน Postgres 9.5 ฉันมีตารางที่ใช้สำหรับรวบรวมข้อมูลจากตารางอื่น คีย์ผสมประกอบด้วย 20 คอลัมน์โดย 10 ซึ่งสามารถเป็นโมฆะได้ ด้านล่างฉันได้สร้างรุ่นที่เล็กกว่าของปัญหาที่ฉันมีโดยเฉพาะกับค่าเป็นศูนย์ 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 …

6
เหตุใดฉันไม่สามารถใช้ค่า Null ในการเข้าร่วมได้
ฉันได้แก้ไขปัญหาการสืบค้นโดยใช้ ... row_number() over (partition by... นี่เป็นคำถามทั่วไปเพิ่มเติมเกี่ยวกับสาเหตุที่เราไม่สามารถใช้คอลัมน์ที่มีค่า Null ในการเข้าร่วมได้ เหตุใดค่าโมฆะจึงไม่เท่ากับค่าว่างเพื่อการเข้าร่วม?
13 oracle  join  null 

3
สามารถแยกความแตกต่างจากการรวมเข้ากับอะไรก็ได้หรือไม่?
เป็นวิธีการรวมIS DISTINCT FROMกับpostgres 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 …

3
วิธีรับค่า non-null ล่าสุดในคอลัมน์ที่เรียงลำดับของตารางขนาดใหญ่ได้อย่างไร
ฉันมีอินพุตต่อไปนี้: id | value ----+------- 1 | 136 2 | NULL 3 | 650 4 | NULL 5 | NULL 6 | NULL 7 | 954 8 | NULL 9 | 104 10 | NULL ฉันคาดหวังผลลัพธ์ต่อไปนี้: id | value ----+------- 1 | 136 2 | 136 3 | 650 4 …

3
เพิ่มคอลัมน์การเปลี่ยนแปลงความเร็วในตารางขนาดใหญ่เป็น NON NULL
ฉันเพิ่งเพิ่มคอลัมน์บิตแบบ NULL ไปยังตารางที่มีเกือบ 500 ล้านแถว ไม่มีค่าเริ่มต้นในคอลัมน์อย่างไรก็ตามส่วนแทรกทั้งหมดกำลังระบุค่าเป็น 0 หรือ 1 และฉันใช้รูทีนแบบครั้งเดียวเพื่อกำหนด 0 หรือ 1 ให้กับแถวที่มีอยู่ทั้งหมด (อัปเดตแถวเป็นชุดเล็ก ๆ ) ตอนนี้ทุกแถวควรมี 0 หรือ 1 ในคอลัมน์นั้น ฉันต้องการทำให้คอลัมน์บิตเป็นโมฆะไม่ได้ แต่เมื่อฉันพยายามทำมันผ่านALTER TABLE t1 ALTER COLUMN c1 bit not nullมันเริ่มทำงานเป็นเวลา 3 นาทีและฉันหยุดมันเพราะมันบล็อกการอ่านตารางทั้งหมดและฉันสงสัยว่ามันจะใช้เวลานานกว่าจะเสร็จสมบูรณ์ . เป็นไปได้ที่จะใช้เวลาไม่นาน แต่ฉันไม่สามารถเสี่ยงกับการขาดความพร้อมมากเกินไป การย้อนกลับใช้เวลา 6 นาที คุณมีคำแนะนำใด ๆ เกี่ยวกับวิธีที่ฉันจะทำให้คอลัมน์ไม่เป็นโมฆะโดยที่ไม่ต้องใช้เวลาหลายชั่วโมงกว่าจะเสร็จ นอกจากนี้ยังมีวิธีใดที่จะประมาณว่าALTER TABLE ALTER COLUMNคำสั่งที่ฉันเริ่มและยกเลิกจะใช้เวลานานเท่าใด ฉันใช้ SQL Server …

4
เหตุผลที่ไม่ใช้หมายเลขที่ไม่มีค่าใน Oracle?
บริษัท ของเรากำลังติดต่อกับ บริษัท ซอฟต์แวร์อื่นสำหรับโครงการร่วมกันและเราได้รับแจ้งว่าหากไม่ควรแสดงค่าเฉพาะเราควรผ่านใน -5000 (ค่า Sentinel ตามอำเภอใจ) เหตุผลก็คือไม่มีคอลัมน์ตัวเลขในฐานข้อมูล Oracle ของพวกเขารองรับค่า Null ตามคำแนะนำของ Oracle Dev (ปัจจุบัน) ของพวกเขา บริษัท นี้ยังเขียนโค้ดส่วนใหญ่ของพวกเขาใน VB6 (ค่อยๆเปลี่ยนเป็น VB.NET ซึ่งเป็นอีกหัวข้อหนึ่งสำหรับอีกวันหนึ่ง ... ) จากความอยากรู้อย่างแท้จริงมีเหตุผลใดที่ถูกต้องสำหรับคำแนะนำนี้หรือไม่? ฉันไม่สามารถคิดถึงสิ่งใดในด้านของฉัน --- แก้ไข ขอบคุณสำหรับความคิดเห็นทั้งหมด ฉันโพสต์คำถามเดียวกันบน CodeProject.com ( ลิงก์ ) และได้รับคำติชมที่คล้ายกันมาก ดูเหมือนว่าจะมีเพียงครั้งเดียวที่เราจะสามารถพิสูจน์ได้ว่าการปฏิบัตินี้เกี่ยวข้องกับกุญแจต่างประเทศและฉันสามารถระบุได้ว่าไม่มีกุญแจต่างประเทศใด ๆ ในระบบ นักพัฒนาที่ทำตามข้อตกลงนี้ (ฉันเคยทำงานที่ บริษัท นั้น) มีประสบการณ์มากกว่าฉันอย่างมากดังนั้นฉันจึงต้องการตรวจสอบให้แน่ใจว่าไม่มีเหตุผลที่ถูกต้องสำหรับเรื่องนี้ก่อนที่จะทำการตรวจสอบ

3
มีวิธีการตรวจสอบว่างในตัวแปรในส่วนคำสั่ง WHERE ที่เกิดขึ้นเพียงครั้งเดียวหรือไม่?
ฉันมีแบบสอบถามในตารางขนาดใหญ่ที่มีลักษณะเช่นนี้: declare @myIdParam int = 1 select * from myTable where (@myIdParam is null or myTable.Id = @myIdParam) มีเงื่อนไขที่คล้ายกันหลายประการเช่นนี้ในส่วนคำสั่งและยังมีการรวมจำนวนมาก แต่นี่เป็นบทสรุป อย่างมีประสิทธิภาพหาก @myIdParam เป็นโมฆะเราไม่ต้องการ จำกัด ผลลัพธ์โดยใช้พารามิเตอร์นี้ ฉันไม่ใช่มืออาชีพ DB แต่จากการทดสอบของฉันดูเหมือนว่าการตรวจสอบ NULL นี้ทำสำหรับทุกเร็กคอร์ดและไม่ได้ปรับให้เหมาะสม แต่อย่างใด ถ้าฉันลบการตรวจสอบโมฆะและสมมติว่าพารามิเตอร์นั้นไม่เป็นโมฆะแบบสอบถามจะส่งคืนทันที มิฉะนั้นจะใช้เวลาสูงสุดสิบวินาที มีวิธีการเพิ่มประสิทธิภาพนี้เพื่อตรวจสอบจะทำเพียงครั้งเดียวที่รันไทม์?
12 sql-server  null 

2
เปลี่ยนคอลัมน์ NULL อย่างรวดเร็วเป็น NOT NULL
ฉันมีตารางที่มีแถวเป็นล้านแถวและคอลัมน์ที่อนุญาตให้มีค่า NULL อย่างไรก็ตามในขณะนี้ไม่มีแถวที่มีค่า NULL สำหรับคอลัมน์นั้น (ฉันสามารถตรวจสอบได้อย่างรวดเร็วด้วยแบบสอบถาม) อย่างไรก็ตามเมื่อฉันรันคำสั่ง ALTER TABLE MyTable ALTER COLUMN MyColumn BIGINT NOT NULL; แบบสอบถามใช้เวลาพูดค่อนข้างตลอดไป ใช้เวลาประมาณ 10 ถึง 20 นาทีซึ่งนานกว่าสองเท่าของการเพิ่มข้อ จำกัด การตรวจสอบ มีวิธีอัปเดตข้อมูลเมตาของตารางสำหรับคอลัมน์นั้นทันทีโดยเฉพาะเมื่อฉันรู้ว่าไม่มีแถวใดที่มีค่า NULL สำหรับคอลัมน์นั้น

3
อะไรคือผลของการไม่ระบุ NOT NULL ใน PostgreSQL สำหรับฟิลด์ที่ไม่สามารถเป็นโมฆะได้?
ฉันมีแอปพลิเคชัน (ข้อมูลถูกเก็บไว้ใน PostgreSQL) ซึ่งส่วนใหญ่ของเขตข้อมูลในตารางจะไม่ว่างเสมอ แต่สคีมาสำหรับตารางเหล่านี้ไม่ได้บังคับใช้สิ่งนี้ ตัวอย่างเช่นดูที่ตารางปลอมนี้: 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ข้อ จำกัด ที่ชัดเจน? เรามีขั้นตอนการตรวจสอบโค้ดที่ดีและมีเอกสารที่ดีพอสมควรดังนั้นความเป็นไปได้ที่คนใหม่บางคนจะส่งมอบสิ่งที่ทำลายข้อ จำกัด นี้ไม่เพียงพอที่จะพิสูจน์การเปลี่ยนแปลง นี่ไม่ใช่การตัดสินใจของฉันดังนั้นนี่คือเหตุผลที่ฉันกำลังมองหาเหตุผลอื่น ๆ ในความคิดของฉันถ้าสิ่งที่ไม่สามารถเป็นโมฆะและฐานข้อมูลช่วยให้คุณระบุว่าสิ่งที่ไม่เป็นโมฆะ - เพียงแค่ทำมัน โดยเฉพาะอย่างยิ่งถ้าการเปลี่ยนแปลงนั้นง่ายมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.