Questions tagged «tsql»

T-SQL(事务结构查询语言)是Sybase ASE和Microsoft SQL Server支持的SQL功能的扩展。请勿将此标签用于MySQL,PostgreSql,Oracle(Pl / SQL)相关查询。请注意,使用LINQ编写的SQL代码也不属于该标签的一部分。该标记是专门为使用Microsoft SQL Server进行高级SQL编程而创建的。

12
如果在Microsoft tSQL中找不到行,则返回一个值
使用Microsoft版本的SQL,这是我的简单查询。如果查询一条不存在的记录,则不会返回任何内容。我希望在这种情况下返回false(0)。寻找最简单的方法来说明没有记录。 SELECT CASE WHEN S.Id IS NOT NULL AND S.Status = 1 AND (S.WebUserId = @WebUserId OR S.AllowUploads = 1) THEN 1 ELSE 0 END AS [Value] FROM Sites S WHERE S.Id = @SiteId
94 tsql 

3
在t sql中是否包含StartsWith或包含变量的变量?
我正在尝试检测服务器是否正在运行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');

3
在INNER JOIN条件下使用“ OR”是个坏主意吗?
为了提高超慢查询的速度(如果有关系,请在SQL Server 2008上,在两个表中各只有几分钟,每行只有约50,000行,要花几分钟),将问题缩小到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 MasterID FROM dbo.MainTable AS mt LEFT JOIN dbo.OtherTable AS ot1 …

3
存储DateTime(UTC)与存储DateTimeOffset
我通常有一个“拦截器”,在从数据库读取/写入数据库之前,它会进行DateTime转换(从UTC到本地时间,从本地时间到UTC),因此我可以DateTime.Now在整个系统中使用(派生和比较)而不必担心关于时区。 关于序列化和在计算机之间移动数据,无需费心,因为日期时间始终是UTC。 我应该继续以UTC格式存储日期(SQL 2008-datetime),还是应该使用DateTimeOffset(SQL 2008-datetimeoffset)存储日期? 数据库中的UTC日期(datetime类型)已经可以使用并且已经知道很长时间了,为什么要更改它?有什么优势? 我已经研究过类似这样的文章,但是我并不是100%确信。有什么想法吗?


10
删除SQL Server中的重复记录?
考虑一个名为EmployeeNametable 的列Employee。目标是根据该EmployeeName字段删除重复的记录。 EmployeeName ------------ Anand Anand Anil Dipak Anil Dipak Dipak Anil 我要使用一个查询,删除重复的记录。 如何在SQL Server中使用TSQL做到这一点?

2
如何在单个SELECT语句中具有多个公用表表达式?
我正在简化一个复杂的select语句,因此以为我会使用公用表表达式。 声明单个CTE可以正常工作。 WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 是否可以在同一SELECT中声明和使用多个cte? 即此SQL给出了一个错误 WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2 错误是 Msg 156, Level 15, State …

6
在SQL Server中使用RegEx
我正在寻找如何根据以下RegEx设置/参数使用RegEx替换/编码文本: RegEx.IgnoreCase = True RegEx.Global = True RegEx.Pattern = "[^a-z\d\s.]+" 我在RegEx上看到了一些示例,但是对于如何在SQL Server中以相同方式应用它感到困惑。任何的意见都将会有帮助。谢谢。

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 ) ... etc …



7
在SQL Server中,“ SET ANSI_NULLS ON”是什么意思?
定义说: 当SET ANSI_NULLS为ON时,即使column_name中有空值,使用WHERE column_name = NULL的SELECT语句也将返回零行。即使column_name中包含非空值,使用WHERE column_name <> NULL的SELECT语句也将返回零行。 这是否意味着此查询中将不包含任何空值? SELECT Region FROM employees WHERE Region = @region 还是ANSI_NULL只关心类似这样的查询(其中WHERE包括特定单词NULL)? SELECT Region FROM employees WHERE Region = NULL

10
Where子句中的SQL Row_Number()函数
我Row_Number()在where子句中找到了一个用函数回答的问题。当我尝试一个查询时,出现以下错误: “消息4108,级别15,状态1,第1行窗口函数只能出现在SELECT或ORDER BY子句中。” 这是我尝试过的查询。如果有人知道如何解决此问题,请告诉我。 SELECT employee_id FROM V_EMPLOYEE WHERE row_number() OVER ( ORDER BY employee_id ) > 0 ORDER BY Employee_ID

5
varchar(500)比varchar(8000)有优势吗?
我已经在MSDN论坛上对此进行了阅读,但我仍然不清楚。我认为这是正确的:Varchar(max)将存储为文本数据类型,因此存在缺点。因此,可以说您的字段可靠地在8000个字符以内。就像数据库表中的BusinessName字段一样。实际上,公司名称可能总是少于500个字符(将数字输入我的帽子)。在8k字符数以下,我遇到的许多varchar字段似乎都很好。 那么我应该将该字段设置为varchar(500)而不是varchar(8000)吗?从我对SQL的了解来看,两者之间没有区别。因此,为了使生活更轻松,我想将所有varchar字段都定义为varchar(8000)。那有什么缺点吗? 相关:varchar列的大小(我不觉得这个回答了我的问题)。
90 sql  sql-server  tsql 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.