Questions tagged «sql-server»

Microsoft SQL Server是一个关系数据库管理系统(RDBMS)。将此标签用于所有SQL Server版本,包括Compact,Express,Azure,Fast-track,APS(以前称为PDW)和Azure SQL DW。请勿将此标签用于其他类型的DBMS(MySQL,PostgreSQL,Oracle等)。除非该标签与数据库直接相关,否则请勿将其用于软件和移动开发问题。

9
从日期时间减去一天
我有一个查询来获取2 datetime之间的日期差异为: SELECT DATEDIFF(DAY, @CreatedDate , GETDATE()) Ex : SELECT DATEDIFF(DAY, '2013-03-13 00:00:00.000' , GETDATE()) 我需要有这样的查询工作,它将从创建的日期中减去一天: SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())
102 sql  sql-server  datetime 


7
连接/聚合字符串的最佳方法
我正在寻找一种将不同行中的字符串聚合为一行的方法。我希望在许多不同的地方进行此操作,因此具有促进此操作的功能会很好。我已经尝试过使用COALESCE和解决方案FOR XML,但它们只是不适合我。 字符串聚合将执行以下操作: id | Name Result: id | Names -- - ---- -- - ----- 1 | Matt 1 | Matt, Rocks 1 | Rocks 2 | Stylus 2 | Stylus 我看过CLR定义的聚合函数来代替COALESCE和FOR XML,但是显然SQL Azure 不支持CLR定义的东西,这让我很痛苦,因为我知道能够使用它可以解决很多问题。我的问题。 有什么可能的解决方法,或者类似的最优方法(可能不如CLR最优,但是我会尽力而为)来聚合我的东西?

2
在text或ntext数据类型上替换REPLACE的替代方法
我需要更新/替换datatable.column中的数据。该表具有一个名为的字段Content。我正在使用该REPLACE功能。由于column数据类型为NTEXT,因此SQL Server不允许我使用该REPLACE函数。 我无法更改数据类型,因为此数据库是第三方软件表。更改数据类型将导致应用程序失败。 UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] SET Content = REPLACE(Content,'ABC','DEF') WHERE Content LIKE '%ABC%' 我收到此错误: 消息8116,级别16,状态1,行1参数数据类型ntext对于replace函数的参数1无效。 我可以使用T-SQL修复此问题吗?有人有示例如何阅读和循环吗? 由于这是一次转换,因此也许我可以更改为另一种类型,但恐怕会弄乱数据。 有一个主键字段:名称:ID-整数-这是一个标识...。所以我也需要考虑一下。也许将身份设置为N临时。 请告知如何实现REPLACE功能? 大约 需要使用新的解决方案更新3000条语句。
101 sql  sql-server  tsql 

4
如何在NULL列上创建唯一索引?
我正在使用SQL Server2005。我想将一列中的值限制为唯一,同时允许NULLS。 我当前的解决方案涉及到如下视图的唯一索引: CREATE VIEW vw_unq WITH SCHEMABINDING AS SELECT Column1 FROM MyTable WHERE Column1 IS NOT NULL CREATE UNIQUE CLUSTERED INDEX unq_idx ON vw_unq (Column1) 还有更好的主意吗?


10
生成3到6之间的随机整数值
是否有可能在Microsoft SQL Server中生成从最小值到最大值的随机int值(例如3-9,例如15-99等) 我知道,我可以从0生成最大值,但是如何增加最小值边框? 该查询生成从1到6的随机值。需要将其从3更改为6。 SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables 5秒后添加: 愚蠢的问题,对不起... SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables

5
SQL更新仅在修改列时触发
通过查看其他示例,我想出了以下内容,但它似乎并没有达到我想要的效果:我希望它仅在QtyToRepair值已更新的情况下才更新修改后的信息...但是它不这样做那。 如果我注释掉哪里,那么在每种情况下都会更新修改后的信息。正如我所说,其他例子使我感到乐观。任何线索表示赞赏。谢谢。 沃尔特 ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified] ON [dbo].[SCHEDULE] AFTER UPDATE AS BEGIN SET NOCOUNT ON; UPDATE SCHEDULE SET modified = GETDATE() , ModifiedUser = SUSER_NAME() , ModifiedHost = HOST_NAME() FROM SCHEDULE S INNER JOIN Inserted I on S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber WHERE S.QtyToRepair <> I.QtyToRepair END
101 sql  sql-server  triggers 



14
如何选择最底端的行?
我可以选择SELECT TOP(200)...但是为什么不选择BOTTOM(200)? 难道不是要理解我的意思是,我怎么能做相当于TOP(200)的结果,但相反(从底部开始,就像您期望BOTTOM所做的那样...)?



5
如何使用SQL语法更改主键约束?
我有一个表在其主键约束中缺少一列。我不想通过SQL Server对其进行编辑,而是希望将其放在脚本中以将其添加为更新脚本的一部分。 我可以使用什么语法来做到这一点?我必须删除并重新创建键约束吗?
100 sql-server 

5
SQL NVARCHAR和VARCHAR限制
所有,我都有一个大型(不可避免的)动态SQL查询。由于选择标准中字段的数量,包含动态SQL的字符串的长度超过4000个字符。现在,我知道为设置了最大4000 NVARCHAR(MAX),但是在Server Profiler中查看了已执行的SQL语句 DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO 似乎可以工作(!?),对于另一个也很大的查询,它抛出与此4000极限(!?)相关的错误,基本上在4000极限之后修剪所有SQL,并给我留下语法错误。尽管这样的探查,它表示在这个动态的SQL查询全(!?)。 这里到底发生了什么,我应该将这个@SQL变量转换为VARCHAR并继续进行下去吗? 谢谢你的时间。 附言 能够打印出超过4000个字符以查看这些大查询也将是一件很不错的事情。以下仅限于4000 SELECT CONVERT(XML, @SQL); PRINT(@SQL); 还有其他很酷的方法吗?

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.