Tag: tsql

更新中的T-SQLstringreplace

我需要更新列的值,在现有值上进行子stringreplace。 例: 数据包含abc@domain1 , pqr@domain2等 我需要更新这些值,使@domain2被replace为@domain1 。

如何从T-SQL中的sorting表中的行M开始获取N行

有一个简单的方法可以从任何表中获得前N行: SELECT TOP 10 * FROM MyTable ORDER BY MyColumn 是否有任何有效的方式来查询从行N开始的M行 例如, Id Value 1 a 2 b 3 c 4 d 5 e 6 f 和这样的查询 SELECT [3,2] * FROM MyTable ORDER BY MyColumn /* hypothetical syntax */ 查询从3行开始的2行,即返回3d和4行。

用T-SQL生成随机string

如果你想用T-SQL生成一个伪随机的字母数字string,你会怎么做? 你会如何排除像美元符号,破折号和斜杠字符?

存储DateTime(UTC)与存储DateTimeOffset

我通常有一个“拦截器”就在读/写数据库之前做date时间转换(从UTC到本地时间,从本地时间到utc),所以我可以在整个系统中使用DateTime.Now(派生和比较)担心时区。 关于计算机之间的序列化和移动数据,不需要打扰,因为date时间总是UTC。 我应该继续以UTC格式存储date(SQL 2008 – datetime),还是应该使用DateTimeOffset(SQL 2008 – datetimeoffset)来存储date? UTC在数据库中的date(date时间types)一直在工作和知道这么久,为什么要改变它? 有什么优势? 我已经看过这样的文章,但我不是100%相信。 有什么想法吗?

列出有关SQL Server中所有数据库文件的信息

是否可以列出有关SQL Server上所有数据库的文件(MDF / LDF)的信息? 我想获得一个列表,显示哪个数据库正在使用本地磁盘上的文件。 我试过的: exec sp_databases所有数据库 select * from sys.databases显示了很多关于每个数据库的信息 – 但不幸的是它没有显示每个数据库使用的文件。 select * from sys.database_files显示master数据库的mdf / ldf文件 – 但不包括其他数据库

Where子句中的SQL Row_Number()函数

我发现在where子句Row_Number()函数回答了一个问题。 当我尝试一个查询,我得到以下错误: “消息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

如何在sql server中重新抛出同样的exception

我想重新抛出在我的try块中发生的sql服务器中的相同的exception。 我能够抛出相同的消息,但我想抛出同样的错误。 BEGIN TRANSACTION BEGIN TRY INSERT INTO Tags.tblDomain (DomainName, SubDomainId, DomainCode, Description) VALUES(@DomainName, @SubDomainId, @DomainCode, @Description) COMMIT TRANSACTION END TRY BEGIN CATCH declare @severity int; declare @state int; select @severity=error_severity(), @state=error_state(); RAISERROR(@@Error,@ErrorSeverity,@state); ROLLBACK TRANSACTION END CATCH RAISERROR(@@Error, @ErrorSeverity, @state); 这行会显示错误,但我想要的function。 这引起错误号码50000错误,但我想erron号码被抛出,我通过@@error , 我想在前端捕获这个错误 即 catch (SqlException ex) { if ex.number==2627 MessageBox.show("Duplicate value cannot be […]

TSQL – 如何在BEGIN .. END块中使用GO?

我正在生成一个脚本,用于自动将更改从多个开发数据库迁移到分段/生产。 基本上,它需要一堆更改脚本,并将它们合并成一个脚本,将每个脚本包装在IF whatever BEGIN … END语句。 但是,某些脚本需要GO语句,因此,例如,SQL分析器在创build后就知道新的列。 ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL GO — Necessary, or next line will generate "Unknown column: EMP_IS_ADMIN" UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever 但是,一旦我把它包装在IF块中: IF whatever BEGIN ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL GO UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever END 它失败了,因为我发送一个BEGIN没有匹配的END […]

当我尝试使用sp_executesql时,为什么会得到“Procedure expectpects parameter”@statement“types为”ntext / nchar / nvarchar“。

为什么我得到这个错误 Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. 当我尝试使用sp_executesql?

search并replace数据库中的部分string

我需要replace所有的iframe标签,在我的数据库中存储为nvarchar。 我可以find使用下面的sql问题的条目: SELECT * FROM databasename..VersionedFields WHERE Value LIKE '%<iframe%' 假设我想replace下面的代码段: code before iframe <iframe src="yadayada"> </iframe> code after iframe 有了这个: code before iframe <a>iframe src="yadayada"</a> code after iframe