道歉一个冗长的职位,但我需要张贴一些代码来说明问题。 受问题启发* 不使用select的原因是什么? ,我决定指出一些我之前注意到的select *行为的一些观察。 所以让我们的代码自己说话: IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[starTest]') AND type in (N'U')) DROP TABLE [dbo].[starTest] CREATE TABLE [dbo].[starTest]( [id] [int] IDENTITY(1,1) NOT NULL, [A] [varchar](50) NULL, [B] [varchar](50) NULL, [C] [varchar](50) NULL ) ON [PRIMARY] GO insert into dbo.starTest(a,b,c) select 'a1','b1','c1' union all select 'a2','b2','c2' union all […]
这是SS 2005的。 为什么我只有4000个字符而不是8000个字符? 它在4000处截断string@SQL1。 ALTER PROCEDURE sp_AlloctionReport( @where NVARCHAR(1000), @alldate NVARCHAR(200), @alldateprevweek NVARCHAR(200)) AS DECLARE @SQL1 NVARCHAR(Max) SET @SQL1 = 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName, VenuePanels.PanelID, VenueInfo.CompanyName, VenuePanels.ProductCode, VenuePanels.MF, VenueInfo.Address1, VenueInfo.Address2, '' As AllocationDate, '' As AbbreviationCode, VenueInfo.Suburb, VenueInfo.Route, VenueInfo.ContactFirstName, VenueInfo.ContactLastName, VenueInfo.SuitableTime, VenueInfo.OldVenueName, VenueCategories.Category, VenueInfo.Phone, VenuePanels.Location, VenuePanels.Comment, [VenueCategories].[Category] + '' Allocations'' AS ReportHeader, ljs.AbbreviationCode AS PrevWeekCampaign […]
在SQL和entity framework(ADO.NET实体映射)中,我对这个recursion是新的。 我正在评论pipe理工作,我有一个Comments表,该表包含列NewsID, CommentID, ParentCommentID, IndentLevel, CreatedTime 。 我正在尝试获取特定新闻项目的评论列表,其中所有评论都是根据父项下的孩子和创build时间安排的,如下所示: CommentID | time | ParentCommentID Guid1 | t1 | null Guid4 | t4 | Guid1 Guid2 | t2 | null Guid3 | t3 | Guid2 必须优先考虑孩子的父母关系,然后创造时间。 我迄今为止所关注的是(从互联网资源和以前的计算器Q / A) 如图所示,这些recursion查询很慢。 而使用entity framework这样做更慢。 但是可以实现。 所以,可以通过在SQL Server中创build存储过程并使用function导入来调用它。 另一件事是在entity framework中使用Linq。 在SQL Server中,以这种格式使用它 SQL: WITH cte_name ( column_name [,…n] ) […]
我需要获得SQL中作为date的月份的最后一天。 如果我有这个月的第一天,我可以做这样的事情: DATEADD(DAY, DATEADD(MONTH,'2009-05-01',1), -1) 但有谁知道如何推广它,所以我可以find任何给定date的月份的最后一天?
我想做一个UPSERT的SELECT / INSERT版本。 以下是现有代码的模板: // CREATE TABLE Table (RowID INT NOT NULL IDENTITY(1,1), RowValue VARCHAR(50)) IF NOT EXISTS (SELECT * FROM Table WHERE RowValue = @VALUE) BEGIN INSERT Table VALUES (@Value) SELECT @id = SCOPEIDENTITY() END ELSE SELECT @id = RowID FROM Table WHERE RowValue = @VALUE) 查询将从许多并发会话中调用。 我的性能testing表明,它将持续抛出特定负载下的主键违规。 有没有这种查询的高并发性方法,将允许它保持性能,同时仍然避免插入已经存在的数据?
我想在SQL Server存储过程中的两个date之间列出date。 例如: Date1: 2015-05-28 Date2: 2015-05-31 结果: 2015-05-29 2015-05-30 如何计算两个给定date之间的所有date? 问候,
如果我必须使用localdb ,我们是否需要单独安装? 我安装了SQL Server 2008 R2 Management Studio,安装了SQL Server 2012,安装了.net 4.0.2更新。 但是我没有在PC上看到localdb。
在SQL Server中有两个元数据模式: INFORMATION_SCHEMA SYS 我听说INFORMATION_SCHEMA表是基于ANSI标准的。 在开发例如存储过程时,是否应该在sys表上使用INFORMATION_SCHEMA表?
我有一个像这样构造的文件: <?xml version="1.0" encoding="UTF-8"?> <EventSchedule> <Event Uid="2" Type="Main Event"> <IsFixed>True</IsFixed> <EventKind>MainEvent</EventKind> <Fields> <Parameter Name="Type" Value="TV_Show"/> <Parameter Name="Name" Value="The Muppets"/> <Parameter Name="Duration" Value="00:30:00"/> </Fields> </Event> <Event> …and so on </Event> </EventSchedule> 我不完全确定它是否是有效的XML,但是我需要将其导入到SQL Server中,但是我尝试的所有内容似乎都不起作用。 请任何人都可以用正确的方向指向我,或者使用一些示例代码或build议使用哪种方法? 理想情况下,我希望将原始数据放在一个平坦的表格中,如下所示: Name | Type | Duration | EventKind The Muppets | TV_Show | 00:30:00 | MainEvent 最后,这是来自相当大的文件,我将需要定期导入。 谢谢,普古
在SQL Server 2005中使用什么更有效:PIVOT或MULTIPLE JOIN? 例如,我得到了这个查询使用两个连接: SELECT p.name, pc1.code as code1, pc2.code as code2 FROM product p INNER JOIN product_code pc1 ON p.product_id=pc1.product_id AND pc1.type=1 INNER JOIN product_code pc2 ON p.product_id=pc2.product_id AND pc2.type=2 我可以使用PIVOT做同样的事情: SELECT name, [1] as code1, [2] as code2 FROM ( SELECT p.name, pc.type, pc.code FROM product p INNER JOIN product_code pc ON […]