Tag: tsql

在文本或ntext数据types上替代REPLACE

我需要更新/replacedatatable.column中的数据。 该表有一个名为Content的字段。 我正在使用REPLACEfunction。 由于列数据types是NTEXT ,SQL Server不允许使用REPLACE函数。 我无法更改数据types,因为此数据库是第三方软件表。 更改数据types将导致应用程序失败。 UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] SET Content = REPLACE(Content,'ABC','DEF') WHERE Content LIKE '%ABC%' 我收到此错误: 消息8116,级别16,状态1,行1参数数据typesntext对replace函数的参数1无效。 我可以用T-SQL解决这个问题吗? 有人有一个例子如何阅读和循环? 由于这是一次转换,也许我可以改变到另一种types,但我恐怕我搞乱了数据。 有一个主键字段:名称:ID – 整数 – 这是一个身份….所以我也需要考虑这一点。 也许将身份设置为N临时。 请告知如何实现REPLACEfunction? 约。 3000条语句需要更新一个新的解决scheme。

如何在T-SQL中连接数字和string来格式化数字?

我有以下function ALTER FUNCTION [dbo].[ActualWeightDIMS] ( — Add the parameters for the function here @ActualWeight int, @Actual_Dims_Lenght int, @Actual_Dims_Width int, @Actual_Dims_Height int ) RETURNS varchar(50) AS BEGIN DECLARE @ActualWeightDIMS varchar(50); –Actual Weight IF (@ActualWeight is not null) SET @ActualWeightDIMS = @ActualWeight; –Actual DIMS IF (@Actual_Dims_Lenght is not null) AND (@Actual_Dims_Width is not null) AND (@Actual_Dims_Height is […]

SELECT FOR UPDATE与SQL Server

我正在使用隔离级别为READ_COMMITTED和READ_COMMITTED_SNAPSHOT=ON的Microsoft SQL Server 2005数据库。 现在我想用: SELECT * FROM <tablename> FOR UPDATE …以便在尝试访问同一行“FOR UPDATE”时阻止其他数据库连接。 我试过了: SELECT * FROM <tablename> WITH (updlock) WHERE id=1 …但是即使select“1”以外的其他连接也会阻止其他连接。 对于Oracle,DB2,MySql而言,执行SELECT FOR UPDATE的正确提示是什么? 编辑2009-10-03: 这些是创build表和索引的语句: CREATE TABLE example ( Id BIGINT NOT NULL, TransactionId BIGINT, Terminal BIGINT, Status SMALLINT ); ALTER TABLE example ADD CONSTRAINT index108 PRIMARY KEY ( Id ) CREATE […]

INSERT与INSERT INTO

我一直在MS SQL中使用T-SQL一段时间,不知何故,当我不得不向表中插入数据时,我倾向于使用语法: INSERT INTO myTable <something here> 我知道关键字INTO在这里是可选的,我不必使用它,但不知何故,它成为我的情况下的习惯。 我的问题是: 使用INSERT语法与INSERT INTO什么关系? 哪一个完全符合标准? 它们在SQL标准的其他实现中是否都有效?

SQL Server:仅获取过去一年的数据

我写了一个查询,在这个查询中我只需要去年的数据。 做这个的最好方式是什么? SELECT … FROM … WHERE date > '8/27/2007 12:00:00 AM'

如何在SQL Server中一次更改多个列

我需要ALTER表中几列的数据types。 对于单列,以下工作正常: ALTER TABLE tblcommodityOHLC ALTER COLUMN CC_CommodityContractID NUMERIC(18,0) 但是,如何在一个语句中更改多个列? 以下不起作用: ALTER TABLE tblcommodityOHLC ALTER COLUMN CC_CommodityContractID NUMERIC(18,0), CM_CommodityID NUMERIC(18,0)

')'用GETDATE调用storedproc时语法不正确

也许我有一个'下午'的时刻,但任何人都可以解释为什么我得到 '102',等级15,状态1,行2在')'附近语法不正确。 运行时 CREATE PROC DisplayDate ( @DateVar DATETIME ) AS BEGIN SELECT @DateVar END GO EXEC DisplayDate GETDATE();

SQL更新查询中的聚合函数?

我试图将一个表中的值设置为另一个表中的值的总和。 沿着这些线路的东西: UPDATE table1 SET field1 = SUM(table2.field2) FROM table1 INNER JOIN table2 ON table1.field3 = table2.field3 GROUP BY table1.field3 当然,这样做,它不会工作 – SET不支持SUM ,它不支持GROUP BY 。 我应该知道这一点,但是我的想法是空白的。 我究竟做错了什么?

为什么在xact_abort打开时,Sql Server在raiserror之后继续执行?

我只是感到惊讶的东西在TSQL。 我认为,如果xact_abort打开,调用类似 raiserror('Something bad happened', 16, 1); 会停止执行存储过程(或任何批处理)。 但是我的ADO.NET错误信息刚好相反。 在exception消息中,我得到了两个raiserror错误消息,再加上之后破坏的下一个消息。 这是我的解决方法(无论如何,这是我的习惯),但它似乎不应该是必要的: if @somethingBadHappened begin; raiserror('Something bad happened', 16, 1); return; end; 文档说这个: 当SET XACT_ABORT为ON时,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。 这是否意味着我必须使用明确的交易?

SQLvariables来保存整数列表

我试图debugging别人的SQL报告,并将基础报告查询放入SQL 2012的查询窗口中。 报告要求的参数之一是整数列表。 这是通过多选下拉框在报告上实现的。 报表的底层查询在where子句中使用了这个整数列表 select * from TabA where TabA.ID in (@listOfIDs) 我不想修改我正在debugging的查询,但我不知道如何在SQL Server上创build一个可以容纳这种types的数据来testing它的variables。 例如 declare @listOfIDs int set listOfIDs = 1,2,3,4 没有可以保存整数列表的数据types,那么如何在报表中使用与报表相同的值在SQL Server上运行报表查询?