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

T-SQL (ภาษาคิวรีธุรกรรมเชิงโครงสร้าง) เป็นส่วนเสริมของฟังก์ชัน SQL ที่รองรับโดย Sybase ASE และ Microsoft SQL Server อย่าใช้แท็กนี้สำหรับการสืบค้นที่เกี่ยวข้องกับ MySQL, PostgreSql, Oracle (Pl / SQL) โปรดทราบว่ารหัส SQL ที่กำลังเขียนโดยใช้ LINQ จะไม่เป็นส่วนหนึ่งของแท็กนี้ด้วย แท็กนี้สร้างขึ้นโดยเฉพาะสำหรับการเขียนโปรแกรม SQL ขั้นสูงโดยใช้ Microsoft SQL Server


11
ตรวจสอบว่ามีแถวอยู่หรือไม่
ฉันต้องเขียนขั้นตอนการจัดเก็บ T-SQL ที่ปรับปรุงแถวในตาราง หากไม่มีแถวให้ใส่ลงไป ทุกขั้นตอนนี้ห่อด้วยธุรกรรม นี่เป็นระบบจองดังนั้นมันจะต้องเป็นอะตอมและเชื่อถือได้ จะต้องส่งคืนจริงหากธุรกรรมได้รับการยอมรับและจองเที่ยวบิน ฉันใหม่กับ T-SQLและไม่แน่ใจว่าจะใช้@@rowcountอย่างไร นี่คือสิ่งที่ฉันเขียนจนถึงตอนนี้ ฉันอยู่บนถนนที่ถูกต้องหรือไม่? ฉันแน่ใจว่าเป็นปัญหาง่ายสำหรับคุณ -- BEGIN TRANSACTION (HOW TO DO?) UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightId = @Id AND TicketsMax < (TicketsBooked + @TicketsToBook) -- Here I need to insert only if the row doesn't exists. -- If …

3
การใช้ธุรกรรมที่ถูกต้องใน SQL Server
ฉันมี 2 คำสั่งและต้องการทั้งสองอย่างดำเนินการอย่างถูกต้องหรือไม่มีพวกเขาดำเนินการ ดังนั้นฉันคิดว่าฉันต้องการธุรกรรม แต่ฉันไม่รู้วิธีใช้อย่างถูกต้อง ปัญหาของสคริปต์ต่อไปนี้คืออะไร BEGIN TRANSACTION [Tran1] INSERT INTO [Test].[dbo].[T1] ([Title], [AVG]) VALUES ('Tidd130', 130), ('Tidd230', 230) UPDATE [Test].[dbo].[T1] SET [Title] = N'az2' ,[AVG] = 1 WHERE [dbo].[T1].[Title] = N'az' COMMIT TRANSACTION [Tran1] GO INSERTคำสั่งจะถูกดำเนินการ แต่UPDATEคำสั่งที่มีปัญหา ฉันจะใช้สิ่งนี้เพื่อย้อนกลับทั้งสองคำสั่งหากมีข้อผิดพลาดในการดำเนินการ?

10
ฉันจะหนีจากวงเล็บเหลี่ยมในส่วนคำสั่ง LIKE ได้อย่างไร
ฉันกำลังพยายามกรองรายการด้วยกระบวนงานที่เก็บไว้โดยใช้ Like คอลัมน์คือ varchar (15) รายการที่ฉันพยายามกรองมีชื่อวงเล็บในตาราง ตัวอย่างเช่น WC[R]S123456. ถ้าฉันทำLIKE 'WC[R]S123456'มันจะไม่ส่งคืนสิ่งใด ฉันพบข้อมูลบางอย่างเกี่ยวกับการใช้ESCAPEคำหลักด้วยLIKEแต่ฉันไม่เข้าใจวิธีการใช้มันในการปฏิบัติต่อวงเล็บเหลี่ยมเป็นสตริงปกติ

10
ฉันจะวางข้อ จำกัด foreign key ได้อย่างไรหากมีอยู่ในเซิร์ฟเวอร์ sql
ฉันสามารถวางตารางหากมีอยู่โดยใช้รหัสต่อไปนี้ แต่ไม่ทราบว่าจะทำอย่างไรกับข้อ จำกัด : IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName go ฉันยังเพิ่มข้อ จำกัด โดยใช้รหัสนี้: ALTER TABLE [dbo].[TableName] WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name]) REFERENCES [dbo].[TableName2] ([ID]) go

14
การเปลี่ยนสตริงที่คั่นด้วยเครื่องหมายจุลภาคเป็นแต่ละแถว
ฉันมีตาราง SQL ดังนี้: | SomeID | OtherID | Data +----------------+-------------+------------------- | abcdef-..... | cdef123-... | 18,20,22 | abcdef-..... | 4554a24-... | 17,19 | 987654-..... | 12324a2-... | 13,19,20 มีแบบสอบถามที่ฉันสามารถดำเนินการแบบสอบถามเช่นSELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......'ที่ส่งกลับแต่ละแถวเช่นนี้ | OtherID | SplitData +-------------+------------------- | cdef123-... | 18 | cdef123-... | 20 | cdef123-... …
234 sql-server  tsql  split  comma 

9
เมื่อใดจึงควรใช้ Common Table Expression (CTE)
ฉันเริ่มอ่านเกี่ยวกับCommon Table Expressionและไม่สามารถนึกถึงกรณีการใช้งานที่ฉันจะต้องใช้ พวกเขาดูเหมือนจะซ้ำซ้อนเหมือนกันสามารถทำได้ด้วยตารางที่ได้รับ มีบางอย่างที่ฉันขาดหายไปหรือไม่เข้าใจใช่ไหม ใครสามารถให้ตัวอย่างง่ายๆของข้อ จำกัด กับแบบสอบถามแบบธรรมดา, มาหรือ temp ตารางเพื่อให้กรณีของ CTE? ตัวอย่างง่ายๆใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

14
กรณี T-SQL ข้อ: วิธีการระบุเมื่อเป็นโมฆะ
ฉันเขียนคำแถลง T-SQL ที่คล้ายกันนี้ (คำเดิมมีลักษณะแตกต่างกัน แต่ฉันต้องการยกตัวอย่างง่ายๆที่นี่): SELECT first_name + CASE last_name WHEN null THEN 'Max' ELSE 'Peter' END AS Name FROM dbo.person คำชี้แจงนี้ไม่มีข้อผิดพลาดทางไวยากรณ์ใด ๆ แต่ตัวพิมพ์เล็ก - ใหญ่จะเลือกส่วนของ ELSE เสมอ - และถ้า last_name เป็นโมฆะ แต่ทำไม สิ่งที่ฉันต้องการทำคือการรวม first_name และ last_name แต่ถ้า last_name เป็นโมฆะชื่อทั้งหมดจะกลายเป็นโมฆะ: SELECT first_name + CASE last_name WHEN null THEN '' ELSE …
227 tsql 

10
เหตุใดจึงต้องใช้ระดับการแยก READ UNCOMMITTED
ในภาษาอังกฤษธรรมดาสิ่งที่เป็นข้อเสียและข้อดีของการใช้ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ในแบบสอบถามสำหรับ. NET แอปพลิเคชันและบริการรายงานแอปพลิเคชัน

4
มีความแตกต่างด้านประสิทธิภาพระหว่าง CTE, Sub-Query, Temporary Table หรือ Table Variable หรือไม่?
ในคำถาม SO ที่ยอดเยี่ยมนี้ความแตกต่างระหว่างCTEและsub-queriesถูกกล่าวถึง ฉันต้องการถามเฉพาะ: แต่ละเหตุการณ์ต่อไปนี้มีประสิทธิภาพมากขึ้น / เร็วขึ้นในสถานการณ์ใด CTE แบบสอบถามย่อย ตารางชั่วคราว ตัวแปรตาราง ตามเนื้อผ้าฉันได้ใช้ความพยายามอย่างมากtemp tablesในการพัฒนาstored proceduresเนื่องจากดูเหมือนว่าจะสามารถอ่านได้มากกว่าแบบสอบถามย่อยแบบพัน Non-recursive CTEสรุปชุดข้อมูลได้ดีมากและอ่านได้มาก แต่มีสถานการณ์เฉพาะที่ใคร ๆ สามารถพูดได้ว่าพวกเขาจะทำงานได้ดีขึ้นหรือไม่ หรือว่าเป็นกรณีที่ต้องทำตัวตาม ๆ ตัวเลือกต่าง ๆ เพื่อหาทางออกที่มีประสิทธิภาพที่สุด? แก้ไข ฉันเพิ่งได้รับแจ้งว่าในแง่ของประสิทธิภาพตารางชั่วคราวเป็นตัวเลือกแรกที่ดีเนื่องจากมีฮิสโตแกรมที่เกี่ยวข้องเช่นสถิติ

13
เมื่อใดที่ฉันควรใช้เครื่องหมายอัฒภาคใน SQL Server
ในขณะที่ตรวจสอบรหัสบางส่วนบนเว็บและสคริปต์ที่สร้างขึ้นโดย SQL Server Management Studio ฉันสังเกตว่าคำสั่งบางคำจะจบลงด้วยเครื่องหมายอัฒภาค ดังนั้นเมื่อไรฉันจึงควรใช้
221 sql-server  tsql 

8
ฉันจะจัดกลุ่มคอลัมน์ตามวันที่โดยไม่คำนึงถึงเวลาได้อย่างไร
ฉันมีคำสั่งซื้อสินค้ามากมายและฉันพยายามจัดกลุ่มตามวันที่และรวมปริมาณสำหรับวันที่นั้น ฉันจะจัดกลุ่มตามเดือน / วัน / ปีโดยไม่คำนึงถึงเวลาได้อย่างไร 3/8/2010 7:42:00 ควรจัดกลุ่มด้วย 3/8/2010 4:15:00

5
ฉันจะล้างบัฟเฟอร์ PRINT ใน TSQL ได้อย่างไร
ฉันมีกระบวนงานที่เก็บไว้นานมากใน SQL Server 2005 ที่ฉันพยายามตรวจแก้จุดบกพร่องและฉันใช้คำสั่ง 'พิมพ์' เพื่อทำ ปัญหาคือฉันเพิ่งได้รับข้อความกลับจาก SQL Server ในตอนท้ายสุดของ sproc ของฉัน - ฉันต้องการที่จะสามารถล้างบัฟเฟอร์ข้อความและดูข้อความเหล่านี้ทันทีในช่วงรันไทม์ของ sproc มากกว่าที่ ปลาย

30
คุณสมบัติที่ซ่อนของ SQL Server
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ SQL Serverมีฟีเจอร์ที่ซ่อนไว้อะไรบ้าง? ตัวอย่างเช่นระบบที่ไม่มีเอกสารจัดเก็บขั้นตอน, เทคนิคในการทำสิ่งที่มีประโยชน์มาก แต่ไม่ได้บันทึกไว้เพียงพอหรือไม่ คำตอบ ขอบคุณทุกคนสำหรับคำตอบที่ยอดเยี่ยม! ขั้นตอนการจัดเก็บ sp_msforeachtable:เรียกใช้คำสั่งด้วย '?' แทนที่ด้วยชื่อตารางแต่ละรายการ (v6.5 ขึ้นไป) sp_msforeachdb:เรียกใช้คำสั่งด้วย '?' แทนที่ด้วยชื่อฐานข้อมูลแต่ละชื่อ (v7 ขึ้นไป) sp_who2:เหมือนกับ sp_who แต่มีข้อมูลมากขึ้นสำหรับการแก้ปัญหาบล็อก (v7 ขึ้นไป) sp_helptext:หากคุณต้องการรหัสของกระบวนงานที่เก็บไว้ให้ดู & UDF sp_tables:ส่งคืนรายการตารางทั้งหมดและมุมมองของฐานข้อมูลในขอบเขต sp_stored_procedures:ส่งคืนรายการของโพรซีเดอร์ที่เก็บไว้ทั้งหมด xp_sscanf:อ่านข้อมูลจากสตริงลงในตำแหน่งอาร์กิวเมนต์ที่ระบุโดยอาร์กิวเมนต์แต่ละรูปแบบ xp_fixeddrives::ค้นหาไดรฟ์แบบคงที่ที่มีพื้นที่ว่างมากที่สุด sp_help:หากคุณต้องการทราบโครงสร้างตารางดัชนีและข้อ จำกัด ของตาราง นอกจากนี้ยังมีมุมมองและ UDF ทางลัดคือ Alt + F1 เกร็ดเล็กเกร็ดน้อย ส่งคืนแถวตามลำดับแบบสุ่ม วัตถุผู้ใช้ฐานข้อมูลทั้งหมดตามวันที่แก้ไขล่าสุด วันเดินทางกลับเท่านั้น ค้นหาระเบียนที่วันที่อยู่ที่ไหนสักแห่งในสัปดาห์ปัจจุบัน ค้นหาระเบียนที่วันที่เกิดขึ้นเมื่อสัปดาห์ที่แล้ว ส่งคืนวันที่สำหรับการเริ่มต้นของสัปดาห์ปัจจุบัน …
215 sql-server  tsql 

25
สร้างคลาสจากตารางฐานข้อมูล
ฉันจะสร้างคลาสจากวัตถุตาราง SQL Server ได้อย่างไร ฉันไม่ได้พูดถึงการใช้ ORM ฉันแค่ต้องสร้างเอนทิตี้ (คลาสง่าย) สิ่งที่ต้องการ: public class Person { public string Name { get;set; } public string Phone { get;set; } } รับตารางบางอย่างเช่น: +----+-------+----------------+ | ID | Name | Phone | +----+-------+----------------+ | 1 | Alice | (555) 555-5550 | | 2 | Bob | (555) …
214 c#  sql  sql-server  tsql 

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