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

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

3
เหตุใดฉันจึงได้รับ“ ขั้นตอนคาดหวังพารามิเตอร์ '@statement' ประเภท 'ntext / nchar / nvarchar'” เมื่อฉันพยายามใช้ sp_executesql?
เหตุใดฉันจึงได้รับข้อผิดพลาดนี้ โพรซีเดอร์ต้องการพารามิเตอร์ '@statement' ของประเภท 'ntext / nchar / nvarchar' เมื่อฉันพยายามใช้sp_executesql?

3
การมี 'OR' ในเงื่อนไข INNER JOIN เป็นความคิดที่ไม่ดีหรือไม่?
ในการพยายามปรับปรุงความเร็วของแบบสอบถามที่ช้ามาก (หลายนาทีในสองตารางโดยมีแถวละประมาณ 50,000 แถวเท่านั้นบน SQL Server 2008 ถ้าเป็นเรื่องสำคัญ) ฉันได้ จำกัด ปัญหาให้แคบลงเป็นการรวมORภายในของฉันเช่นใน: SELECT mt.ID, mt.ParentID, ot.MasterID FROM dbo.MainTable AS mt INNER JOIN dbo.OtherTable AS ot ON ot.ParentID = mt.ID OR ot.ID = mt.ParentID ฉันเปลี่ยนสิ่งนี้เป็น (สิ่งที่ฉันหวังคือ) การรวมด้านซ้ายคู่ที่เทียบเท่าแสดงที่นี่: SELECT mt.ID, mt.ParentID, CASE WHEN ot1.MasterID IS NOT NULL THEN ot1.MasterID ELSE ot2.MasterID END AS …


3
มี StartsWith หรือมีใน t sql พร้อมตัวแปรหรือไม่
ฉันกำลังพยายามตรวจสอบว่าเซิร์ฟเวอร์กำลังเรียกใช้ Express Edition หรือไม่ ฉันมี t sql ต่อไปนี้ DECLARE @edition varchar(50); set @edition = cast((select SERVERPROPERTY ('edition')) as varchar) print @edition ในตัวอย่างของฉัน @edition = Express Edition (64-bit) ฉันจะทำสิ่งต่อไปนี้ได้อย่างไร? (C # แรงบันดาลใจ) DECLARE @isExpress bit; set @isExpress = @edition.StartsWith('Express Edition');

16
SQL - การแปลงชนิดข้อมูล varchar เป็นชนิดข้อมูลวันที่และเวลาส่งผลให้ค่าอยู่นอกช่วง
ผมได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้ SQL เพื่อแปลงค่าชนิดข้อมูลของฉันจากไปvarchardatetime ข่าวสารเกี่ยวกับ 242 ระดับ 16 สถานะ 3 บรรทัดที่ 1 การแปลงชนิดข้อมูล varchar เป็นชนิดข้อมูลวันที่และเวลาส่งผลให้ค่าอยู่นอกช่วง ฉันตรวจสอบข้อมูลแล้วและไม่เห็นอะไรแปลก ๆ : เรียกใช้การตรวจสอบต่อไปนี้และไม่มีผลลัพธ์ทั้งหมด SELECT [Date] from table where [DATe] is null SELECT [Date] from table where [DATe] = '' SELECT [Date] from table where LEN([date])> 10 SELECT [Date] from table where LEN([date])< 10 SELECT top …

4
T-SQL รับค่าที่เลือกของกระบวนงานที่เก็บไว้
ใน T-SQL อนุญาตให้ใช้: DECLARE @SelectedValue int SELECT @SelectedValue = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1 ดังนั้นจึงเป็นไปได้ที่จะรับค่าของ SELECT และใส่ไว้ในตัวแปร (หากเป็นสเกลาร์อย่างชัดเจน) ถ้าฉันใส่ตรรกะการเลือกเดียวกันในขั้นตอนการจัดเก็บ: CREATE PROCEDURE GetMyInt AS SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1 ฉันสามารถรับผลลัพธ์ของกระบวนงานที่เก็บไว้นี้และบรรจุไว้ในตัวแปรได้หรือไม่ สิ่งที่ต้องการ: DECLARE @SelectedValue int SELECT @SelectedValue = EXEC GetMyInt (ฉันรู้ว่าไม่อนุญาตให้ใช้ไวยากรณ์ด้านบนเพราะฉันลองแล้ว!)

10
ลบระเบียนที่ซ้ำกันใน SQL Server หรือไม่
พิจารณาคอลัมน์ชื่อตารางEmployeeName Employeeเป้าหมายคือการลบบันทึกซ้ำโดยพิจารณาจากEmployeeNameฟิลด์ EmployeeName ------------ Anand Anand Anil Dipak Anil Dipak Dipak Anil ใช้แบบสอบถามเดียวฉันต้องการลบระเบียนที่ซ้ำ สิ่งนี้สามารถทำได้ด้วย TSQL ใน SQL Server?

6
ใช้ RegEx ใน SQL Server
ฉันกำลังมองหาวิธีแทนที่ / เข้ารหัสข้อความโดยใช้ RegEx ตามการตั้งค่า RegEx / พารามิเตอร์ด้านล่าง: RegEx.IgnoreCase = True RegEx.Global = True RegEx.Pattern = "[^a-z\d\s.]+" ฉันเคยเห็นตัวอย่างบางส่วนใน RegEx แต่สับสนว่าจะใช้วิธีเดียวกันกับ SQL Server ได้อย่างไร ข้อเสนอแนะใด ๆ ที่จะเป็นประโยชน์ ขอบคุณ.

2
ฉันจะมีนิพจน์ตารางทั่วไปหลายรายการในคำสั่ง SELECT เดียวได้อย่างไร
ฉันอยู่ในขั้นตอนการลดความซับซ้อนของคำสั่ง select ที่ซับซ้อนดังนั้นฉันคิดว่าฉันจะใช้นิพจน์ตารางทั่วไป การประกาศ cte เดียวทำงานได้ดี WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 เป็นไปได้หรือไม่ที่จะประกาศและใช้มากกว่าหนึ่ง cte ใน SELECT เดียวกัน นั่นคือ sql นี้ให้ข้อผิดพลาด WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union …

6
จะใช้อักขระสี่ตัวสุดท้ายจาก varchar ได้อย่างไร
ฉันพยายามใช้อักขระสี่ตัวสุดท้ายจากฟิลด์ varchar เท่านั้น แถวทั้งหมดมีความยาวต่างกัน ฉันควรใช้ฟังก์ชันอะไรเพื่อทำสิ่งนี้ให้สำเร็จ

4
ประกาศตัวแปรสำหรับสตริงการสืบค้น
ฉันสงสัยว่ามีวิธีทำใน MS SQL Server 2005 หรือไม่: DECLARE @theDate varchar(60) SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59''' SELECT AdministratorCode, SUM(Total) as theTotal, SUM(WOD.Quantity) as theQty, AVG(Total) as avgTotal, (SELECT SUM(tblWOD.Amount) FROM tblWOD JOIN tblWO on tblWOD.OrderID = tblWO.ID WHERE tblWO.Approved = '1' AND tblWO.AdministratorCode = tblWO.AdministratorCode AND tblWO.OrderDate BETWEEN @theDate ) …

7
ใน SQL Server“ SET ANSI_NULLS ON” หมายความว่าอย่างไร
คำจำกัดความกล่าวว่า: เมื่อ SET ANSI_NULLS เปิดอยู่คำสั่ง SELECT ที่ใช้ WHERE column_name = NULL จะส่งกลับศูนย์แถวแม้ว่าจะมีค่า null ใน column_name ก็ตาม คำสั่ง SELECT ที่ใช้ WHERE column_name <> NULL ส่งคืนแถวศูนย์แม้ว่าจะมีค่าที่ไม่ใช่ null ใน column_name ก็ตาม นี่หมายความว่าจะไม่มีการรวมค่าว่างในแบบสอบถามนี้หรือไม่? SELECT Region FROM employees WHERE Region = @region หรือANSI_NULLกังวลเฉพาะคำถามเช่นนี้ (ซึ่งWHEREรวมถึงคำเฉพาะNULL)? SELECT Region FROM employees WHERE Region = NULL

9
วิธีการแปลงวันที่และเวลาเป็นสตริงใน T-SQL
ฉันแปลกใจที่ไม่พบคำถามนี้ที่นี่แล้ว ฉันมีวันเวลาที่หลากหลายและฉันต้องการแปลงเป็นสตริงเพื่อที่ฉันจะได้ต่อท้ายกับสตริงอื่น ฉันต้องการให้อยู่ในรูปแบบที่สามารถแปลงกลับเป็นวันที่เวลาได้อย่างง่ายดาย ฉันจะทำเช่นนี้ได้อย่างไร? (ฉันต้องการส่วนวันที่และส่วนเวลา)
92 sql-server  tsql 

13
รายการข้อมูลเกี่ยวกับไฟล์ฐานข้อมูลทั้งหมดใน SQL Server
เป็นไปได้ไหมที่จะแสดงรายการข้อมูลเกี่ยวกับไฟล์ (MDF / LDF) ของฐานข้อมูลทั้งหมดบน SQL Server ฉันต้องการรับรายการที่แสดงว่าฐานข้อมูลใดใช้ไฟล์ใดในดิสก์ภายในเครื่อง สิ่งที่ฉันพยายาม: exec sp_databases ฐานข้อมูลทั้งหมด select * from sys.databases แสดงข้อมูลจำนวนมากเกี่ยวกับแต่ละฐานข้อมูล - แต่น่าเสียดายที่ไม่แสดงไฟล์ที่ใช้โดยแต่ละฐานข้อมูล select * from sys.database_filesแสดงไฟล์ mdf / ldf ของmasterฐานข้อมูล - แต่ไม่ใช่ฐานข้อมูลอื่น

6
เพิ่มความสัมพันธ์ของ Foreign Key ระหว่างสองฐานข้อมูล
ฉันมีสองตารางในสองฐานข้อมูลที่แตกต่างกัน ใน table1 (ในฐานข้อมูล 1) มีคอลัมน์ชื่อ column1 และเป็นคีย์หลัก ตอนนี้ใน table2 (ใน database2) มีคอลัมน์ชื่อ column2 และฉันต้องการเพิ่มเป็นคีย์ต่างประเทศ ฉันพยายามเพิ่มมันและทำให้ฉันมีข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 1763 ระดับ 16 สถานะ 0 บรรทัด 1 การอ้างอิงคีย์ต่างประเทศข้ามฐานข้อมูลไม่ได้รับการสนับสนุน ฐานข้อมูลคีย์ต่างประเทศ 2.table2. ข่าวสารเกี่ยวกับ 1750 ระดับ 16 สถานะ 0 บรรทัด 1 ไม่สามารถสร้างข้อ จำกัด ดูข้อผิดพลาดก่อนหน้านี้ ฉันจะทำเช่นนั้นได้อย่างไรเนื่องจากตารางอยู่ในฐานข้อมูลที่แตกต่างกัน

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