在T-SQL中分配变量时,SET和SELECT语句之间有什么区别?
我有一个start_date和end_date.我想获得这两个日期之间的日期列表.任何人都可以帮我指出我的查询中的错误.
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
Run Code Online (Sandbox Code Playgroud)
这Date是一个datetime变量.
我意识到如果我的所有值都是固定宽度的话,建议使用CHAR.但是,那又怎样?为什么不为所有文本字段选择VARCHAR只是为了安全.
我想编写一个SQL命令来从一个ALTER TABLE语句中删除单个表中的多个列.
来自MSDN的ALTER TABLE文档 ......
Run Code Online (Sandbox Code Playgroud)DROP { [CONSTRAINT] constraint_name | COLUMN column_name }指定从表中删除constraint_name或column_name.如果兼容级别为65或更早,则不允许使用DROP COLUMN.可以列出多个列和约束.
它说mutliple列可以在语句中列出,但语法不显示可选的逗号或任何甚至暗示语法的东西.
我应该如何编写SQL以在一个语句中删除多个列(如果可能)?
我有一个SQL脚本,每次客户端执行"数据库管理"功能时都必须运行该脚本.该脚本包括在客户端数据库上创建存储过程.其中一些客户端在运行脚本时可能已经有了存储过程,有些可能没有.我需要将缺少的存储过程添加到客户端数据库中,但是我尝试弯曲T-SQL语法并不重要,我得到了
CREATE/ALTER PROCEDURE'必须是查询批处理中的第一个语句
在创作作品之前我已经读到了它,但我不喜欢这样做.
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'MyProc')
DROP PROCEDURE MyProc
GO
CREATE PROCEDURE MyProc
...
Run Code Online (Sandbox Code Playgroud)
如何添加检查存储过程是否存在并创建它(如果它不存在)但如果存在则更改它?
我想使用T-SQL将表移动到特定的Schema中?我正在使用SQL Server 2008.
何时以及为什么有人决定他们需要在他们的数据库中创建一个View?为什么不运行正常的存储过程或选择?
我试图将日期与单个部分(如12,1,2007)转换为SQL Server 2005中的日期时间.我尝试了以下内容:
CAST(DATEPART(year, DATE)+'-'+ DATEPART(month, DATE) +'-'+ DATEPART(day, DATE) AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误的日期.将三个日期值转换为正确的日期时间格式的正确方法是什么.
有人可以在SQL中解释以下行为吗?
SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)
Run Code Online (Sandbox Code Playgroud) 可能重复:
SQL - 如何删除重复的行?
我有一个行数非常多的表.不允许重复,但由于行如何创建的问题我知道这个表中有一些重复.我需要从关键列的角度消除额外的行.其他一些列的数据可能略有不同,但我并不关心.我仍然需要保留其中一行.SELECT DISTINCT将无法工作,因为它在所有列上运行,我需要根据键列抑制重复.
如何删除额外的行但仍保持有效?