Tag: tsql

“COLLATE SQL_Latin1_General_CP1_CI_AS”是做什么的?

我有一个SQL查询来创buildSQLServer中的数据库,如下所示: create database yourdb on ( name = 'yourdb_dat', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdbdat.mdf', size = 25mb, maxsize = 1500mb, filegrowth = 10mb ) log on ( name = 'yourdb_log', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdblog.ldf', size = 7mb, maxsize = 375mb, filegrowth = 10mb ) COLLATE SQL_Latin1_General_CP1_CI_AS; go 它运行良好。 虽然其余的SQL很清楚,但我对COLLATE SQL_Latin1_General_CP1_CI_AS的function非常困惑。 任何人都可以向我解释这个? 另外,我想知道以这种方式创build数据库是否是最佳做法?

T-SQL中的'NOT'布尔值不能处理'bit'数据types?

试图执行一个布尔NOT操作,似乎在MS SQL Server 2005下,下面的块不起作用 DECLARE @MyBoolean bit; SET @MyBoolean = 0; SET @MyBoolean = NOT @MyBoolean; SELECT @MyBoolean; 相反,我越来越成功 DECLARE @MyBoolean bit; SET @MyBoolean = 0; SET @MyBoolean = 1 – @MyBoolean; SELECT @MyBoolean; 然而,这看起来有点扭曲的方式来expression一些简单的否定。 我错过了什么吗?

我可以在脚本或存储过程中创build一次性使用function吗?

在SQL Server 2005中,是否有一个一次性使用的概念,或在SQL脚本或存储过程中声明的本地函数? 我想在我正在编写的脚本中抽象出一些复杂性,但是它需要能够声明一个函数。 只是好奇。 谢谢!!

IDENTITY_INSERT设置为OFF – 如何打开它?

我有一个已删除的文件存档数据库,存储已被删除的文件的ID,我希望pipe理员能够恢复该文件(以及相同的ID链接文件)。 我不想把identity_insert从整个表中删除,因为增加一个很好。 在我插入到TBL_Content存储过程中,我有这样的东西 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON SET IDENTITY_INSERT tbl_content ON GO ALTER procedure [dbo].[spInsertDeletedIntoTBLContent] @ContentID int, …insert command… SET IDENTITY_INSERT tbl_content OFF 但是我一直得到相同的错误: 当IDENTITY_INSERT设置为OFF时,不能在表'TBL_Content'中插入标识列的显式值。 任何帮助?

如何识别引用特定表的所有存储过程

为了testing目的,我创build了一个开发环境表,有几个sp正在修复这个表。 现在我必须删除这个表格,并且确定所有引用这个表格的sp。 我很难find所有sp的列表。 请通过假设表名是'x'和数据库是sql server 2005来build议一些查询。

保持简单,以及如何在查询中执行多个CTE

我有这个简单的T-SQL查询,它从一个表中发出一堆列,并且还从其他相关表中join信息。 我的数据模型很简单。 我有一个预定的活动,与参与者。 我需要知道每个事件有多less参与者。 我的解决scheme是添加一个CTE,将预定事件分组,并统计参与者的数量。 这将允许我参加每个预定活动的信息。 保持查询简单。 但是,如果我将来需要在简单查询期间添加其他临时结果,我该怎么办? 我真的很喜欢它,如果我可以有多个CTE,但我不能,对不对? 我在这里有什么select? 我排除了应用程序数据层的视图和做事情。 我宁愿孤立我的SQL查询。

如何使用SQL Server截断string

我在SQL Server中有大string。 我想截断该string10或15个字符 原始string this is test string. this is test string. this is test string. this is test string. 期望的string this is test string. this is ……

使用INSERT INTO插入多个值(SQL Server 2005)

在SQL Server 2005中,我试图找出为什么我无法将多个字段插入到表中。 以下查询插入一个logging,工作正常: INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') 但是,以下查询(指定多个值)失败: INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') 我得到这个消息: Msg 102, Level 15, State 1, Line 5 Incorrect syntax near ','. 当我在SQL Sever Management Studio中查询INSERT的帮助时,他们的一个例子显示了我使用的“Values”语法(用括号括起来并用逗号分隔)。 我在SQL Server Management Studio中find的帮助文档看起来像SQL Server 2008,所以也许这就是插入不起作用的原因。 无论哪种方式,我不明白为什么它不会工作。

SQL Server“文本”数据types的WHERE子句

在SQL Server中将[CastleType]设置为数据types“text”,查询为: SELECT * FROM [Village] WHERE [CastleType] = 'foo' 我得到的错误: 数据typesTEXT和VARCHAR在等于运算符中是不兼容的。 我不能用WHERE子句查询这个数据types吗?

MS SQL比较date?

我有2个date(date时间): date1 = 2010-12-31 15:13:48.593 date2 = 2010-12-31 00:00:00.000 同一天,只是不同的时间。 使用<=比较date1和date2是不行的,因为date1时间。 所以date1 <= date2是错的,但应该是真的。 我可以比较他们只看年,月和日,所以他们是一样的吗? 它的SQL Server 2008。 谢谢 :)