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

Structured Query Language (SQL) เป็นภาษาสำหรับการสืบค้นฐานข้อมูล คำถามควรมีตัวอย่างรหัสโครงสร้างตารางข้อมูลตัวอย่างและแท็กสำหรับการใช้งาน DBMS (เช่น MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 และอื่น ๆ ) หากคำถามของคุณเกี่ยวข้องกับ DBMS เฉพาะ (ใช้ส่วนขยาย / คุณลักษณะเฉพาะ) ให้ใช้แท็กของ DBMS นั้นแทน คำตอบของคำถามที่ติดแท็กด้วย SQL ควรใช้ SQL มาตรฐาน ISO / IEC

6
MySQL CONCAT ส่งคืน NULL ถ้าเขตข้อมูลใดมี NULL
ฉันมีข้อมูลต่อไปนี้ใน "อุปกรณ์" ในตารางของฉัน affiliate_name affiliate_location model ip os_type os_version cs1 inter Dell 10.125.103.25 Linux Fedora cs2 inter Dell 10.125.103.26 Linux Fedora cs3 inter Dell 10.125.103.27 NULL NULL cs4 inter Dell 10.125.103.28 NULL NULL ฉันดำเนินการค้นหาด้านล่าง SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name FROM devices มันส่งคืนผลลัพธ์ที่ระบุด้านล่าง cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora (NULL) (NULL) วิธีที่จะออกมาจากสิ่งนี้เพื่อที่จะไม่สนใจค่า NULL และผลลัพธ์ควรเป็น cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora …
163 mysql  sql  null  concat 

26
เคยมีเวลาบ้างไหมที่ใช้ความสัมพันธ์แบบ 1: 1 กับฐานข้อมูล
ฉันคิดถึงวันธรรมดาในการทำให้เป็นมาตรฐานและมันเกิดขึ้นกับฉันฉันไม่สามารถนึกถึงเวลาที่ควรมีความสัมพันธ์แบบ 1: 1 ในฐานข้อมูล Name:SSN? ฉันต้องการพวกเขาในตารางเดียวกัน PersonID:AddressID? อีกครั้งตารางเดียวกัน ฉันสามารถสร้างตัวอย่างที่มีค่าเป็นล้าน ๆ ได้คือ 1: มากหรือมาก: มาก (พร้อมโต๊ะกลางที่เหมาะสม) แต่ไม่เคยเป็น 1: 1 ฉันขาดอะไรที่ชัดเจนหรือไม่

6
เข้าร่วมซ้ายกับส่วนคำสั่งที่
ฉันต้องดึงการตั้งค่าเริ่มต้นทั้งหมดจากตารางการตั้งค่า แต่ยังคว้าการตั้งค่าตัวละครหากมีอยู่สำหรับตัวอักษร x แต่เคียวรีนี้ดึงข้อมูลการตั้งค่าเหล่านั้นโดยที่อักขระคือ = 1 ไม่ใช่การตั้งค่าเริ่มต้นหากผู้ใช้ไม่ได้กำหนดใครไว้ SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1' ดังนั้นฉันต้องการสิ่งนี้: array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') ) โดยที่ 1 และ 2 เป็นค่าเริ่มต้นเมื่อคีย์ 0 …

12
ฉันจะลบอักขระแรกของคอลัมน์ที่ระบุในตารางได้อย่างไร
ใน SQL ฉันจะลบ 4 อักขระแรกของค่าของคอลัมน์ที่ระบุในตารางได้อย่างไร ชื่อคอลัมน์และค่าตัวอย่างคือStudent Code ABCD123Stu1231ฉันต้องการลบ 4 ตัวอักษรแรกจากตารางของฉันสำหรับบันทึกทั้งหมด กรุณาแนะนำฉัน
162 sql  sql-server  string  tsql 

15
เทคนิคที่ดีกว่าสำหรับการตัดเลขศูนย์ชั้นนำใน SQL Server หรือไม่
ฉันใช้มันมาระยะหนึ่งแล้ว: SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col)) อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันพบปัญหาเกี่ยวกับคอลัมน์ที่มีอักขระ "0" ทั้งหมดเช่น '00000000' เนื่องจากไม่พบอักขระที่ไม่ใช่ "0" ให้ตรงกัน เทคนิคทางเลือกที่ฉันเคยเห็นคือการใช้TRIM: REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0') ปัญหานี้มีปัญหาหากมีช่องว่างในตัวเพราะจะเปลี่ยนเป็น "0" เมื่อช่องว่างนั้นถูกเปลี่ยนกลับเป็น "0" ฉันพยายามหลีกเลี่ยงสเกลาร์ UDF ฉันพบปัญหาเกี่ยวกับประสิทธิภาพการทำงานกับ UDF จำนวนมากใน SQL Server 2005

15
LIMIT 10..20 ใน SQL Server
ฉันพยายามทำสิ่งที่ชอบ: SELECT * FROM table LIMIT 10,20 หรือ SELECT * FROM table LIMIT 10 OFFSET 10 แต่ใช้ SQL Server ทางออกเดียวที่ฉันค้นพบดูเหมือนว่าเป็น overkill SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases ) a WHERE row > 5 and row <= 10 ฉันก็ค้นพบ : SELECT TOP …

4
SQL, Postgres OIDs, มีอะไรบ้างและทำไมจึงมีประโยชน์?
ฉันกำลังดูการสร้างตาราง PostgreSQL และฉันพบสิ่งนี้: CREATE TABLE ( ... ) WITH ( OIDS = FALSE ); ฉันอ่านเอกสารที่จัดทำโดย postgres และฉันรู้แนวคิดของตัวระบุวัตถุจาก OOP แต่ฉันก็ยังไม่เข้าใจ เหตุใดตัวระบุดังกล่าวจึงมีประโยชน์ในฐานข้อมูล การทำให้ข้อความค้นหาสั้นลง? ควรใช้เมื่อใด


4
ลบแถว sql ที่ ID ไม่มีการจับคู่จากตารางอื่น
ฉันกำลังพยายามลบรายการเด็กกำพร้าในตาราง MySQL ฉันมี 2 ตารางเช่นนี้ ตารางfiles: | id | .... ------------ | 1 | .... | 2 | .... | 7 | .... | 9 | .... ตารางblob: | fileid | .... ------------ | 1 | .... | 2 | .... | 3 | .... | 4 | .... | …
160 sql  mysql 

13
ฉันจะรับ SQL ของ PreparedStatement ได้อย่างไร
ฉันมีวิธี Java ทั่วไปที่มีลายเซ็นวิธีการดังต่อไปนี้: private static ResultSet runSQLResultSet(String sql, Object... queryParams) มันเปิดการเชื่อมต่อสร้างการPreparedStatementใช้คำสั่ง sql และพารามิเตอร์ในqueryParamsอาร์เรย์ความยาวตัวแปรเรียกใช้แคชResultSet(ในCachedRowSetImpl), ปิดการเชื่อมต่อและส่งกลับชุดผลแคช ฉันมีข้อยกเว้นการจัดการในวิธีการที่บันทึกข้อผิดพลาด ฉันบันทึกคำสั่ง sql เป็นส่วนหนึ่งของบันทึกเนื่องจากมีประโยชน์มากสำหรับการแก้ไขข้อบกพร่อง ปัญหาของฉันคือการบันทึกตัวแปร String จะsqlบันทึกคำสั่งเทมเพลตด้วยหรือไม่แทนค่าจริง ฉันต้องการบันทึกคำสั่งจริงที่ดำเนินการ (หรือพยายามดำเนินการ) ดังนั้น ... มีวิธีที่จะได้รับคำสั่ง SQL ที่เกิดขึ้นจริงที่จะดำเนินการโดยใดPreparedStatement? ( โดยไม่ต้องสร้างมันด้วยตัวเองถ้าฉันไม่สามารถหาวิธีเข้าถึงPreparedStatement'sSQL ได้ฉันอาจจะสร้างมันด้วยตัวเองในcatches)

5
ส่งคืน 0 ถ้าฟิลด์เป็นโมฆะใน MySQL
ใน MySQL มีวิธีตั้งค่าเขตข้อมูล "รวม" เป็นศูนย์หรือไม่ถ้าเป็น NULL นี่คือสิ่งที่ฉันมี: SELECT uo.order_id, uo.order_total, uo.order_status, (SELECT SUM(uop.price * uop.qty) FROM uc_order_products uop WHERE uo.order_id = uop.order_id ) AS products_subtotal, (SELECT SUM(upr.amount) FROM uc_payment_receipts upr WHERE uo.order_id = upr.order_id ) AS payment_received, (SELECT SUM(uoli.amount) FROM uc_order_line_items uoli WHERE uo.order_id = uoli.order_id ) AS line_item_subtotal FROM …
160 sql  mysql 

9
MySQL Workbench: จะทำให้การเชื่อมต่อมีชีวิตชีวาได้อย่างไร
รหัสข้อผิดพลาด: 2013. สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระหว่างการสืบค้น ฉันใช้ MySQL Workbench นอกจากนี้ฉันกำลังใช้ชุดของเม็ดมีดรวมทั้งหมด 1,000 บรรทัด (เช่นINSERT INTO mytable SELECT * FROM mysource1; INSERT INTO mytable SELECT * FROM mysource2;...mysource3...mysource4คูณด้วย 1,000 ครั้ง) แต่ละชุดใช้เวลานานพอสมควรบางส่วนก็มากกว่า 600 วินาที ฉันจะกำหนดค่า workbench ให้ทำงานต่อเนื่องข้ามคืนโดยไม่หยุดและไม่ขาดการเชื่อมต่อได้อย่างไร

4
ตารางแก้ไข sqlite เพิ่มคอลัมน์หลายรายการในคำสั่งเดียว
เป็นไปได้หรือไม่ที่จะแก้ไขตารางที่เพิ่มคอลัมน์หลายคอลัมน์ในคำสั่งเดี่ยวใน sqlite ต่อไปนี้จะไม่ทำงาน แก้ไขการทดสอบตารางเพิ่มข้อความคอลัมน์ mycolumn1 เพิ่มข้อความคอลัมน์ mycolumn2;
159 sql  sqlite  alter-table 


7
SQL UPDATE ค่าทั้งหมดในฟิลด์ที่มีสตริงต่อท้าย CONCAT ไม่ทำงาน
นี่คือสิ่งที่ฉันต้องการจะทำ: ตารางปัจจุบัน: +----+-------------+ | id | data | +----+-------------+ | 1 | max | | 2 | linda | | 3 | sam | | 4 | henry | +----+-------------+ แบบสอบถามลึกลับ (บางอย่าง"UPDATE table SET data = CONCAT(data, 'a')") ตารางผลลัพธ์: +----+-------------+ | id | data | +----+-------------+ | 1 | maxa …

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