Tag: tsql

如何在LIKE子句中转义方括号?

我正在尝试使用类似的过滤存储过程的项目。 该列是一个varchar(15)。 我试图过滤的项目在名称中有方括号。 例如: WC[R]S123456 。 如果我做一个LIKE 'WC[R]S123456'它不会返回任何东西。 我发现一些关于在LIKE使用ESCAPE关键字的信息,但我不明白如何使用它将方括号视为常规string。

SQL Server 2008中的CROSS JOIN和INNER JOIN

CROSS JOIN和INNER JOIN和有什么不一样? 交叉连接: SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status], FROM Customers CROSS JOIN Movies 内部联接: SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status] FROM Customers INNER JOIN Movies ON Customers.CustomerID = Movies.CustomerID 哪一个更好,为什么我会使用其中之一?

使用存在1或存在的子查询*

我曾经写这样的EXISTS检查: IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Where Columns=@Filters END 在以前的DBA的一个人告诉我,当我做一个EXISTS子句,使用SELECT 1而不是SELECT * IF EXISTS (SELECT 1 FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Columns=@Filters END 这是否真的有所作为?

在SqlCommand中传递数组参数

我正在尝试传递数组参数到像下面的C#中的SQL commnd,但它不起作用。 有人见过吗? string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)"; SqlConnection sqlCon = new SqlConnection(connectString); SqlCommand sqlComm = new SqlCommand(); sqlComm.Connection = sqlCon; sqlComm.CommandType = System.Data.CommandType.Text; sqlComm.CommandText = sqlCommand; sqlComm.CommandTimeout = 300; sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar); StringBuilder sb = new StringBuilder(); foreach (ListItem item in ddlAge.Items) { if (item.Selected) { sb.Append(item.Text + ","); […]

SQL查询来select两个date之间的date

我有一个start_date和end_date 。 我想要得到这两个date之间的date列表。 任何人都可以帮我指出我的查询中的错误。 select Date,TotalAllowance from Calculation where EmployeeId=1 and Date between 2011/02/25 and 2011/02/27 这里Date是一个datetimevariables。

从存储过程的结果集中select列

我有一个存储过程,返回80列和300行。 我想写一个select,获得这些列中的2。 就像是 SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2' 当我使用上面的语法,我得到的错误: “无效的列名称”。 我知道最简单的解决scheme将是更改存储过程,但我没有写,我不能改变它。 有什么办法可以做我想要的吗? 我可以做一个临时表来放置结果,但是因为有80列,所以我需要制作一个80列的临时表才能得到2列。 我想避免跟踪所有返回的列。 我试图使用WITH SprocResults AS ….如马克build议,但我得到了2个错误 关键字“EXEC”附近的语法不正确。 )附近语法不正确。 我试图声明一个表variables,我得到了以下错误 插入错误:提供的值的列名或数量与表定义不匹配 如果我尝试 SELECT * FROM EXEC MyStoredProc 'param1', 'param2' 我得到的错误: 关键字'exec'附近的语法不正确。

在SQL中将月份编号转换为月份名称函数

我有几个月存储在SQL Server作为1,2,3,4,… 12。 我想把它们显示为1月,2月等。是否有像SQL Server中的函数MonthName(1)= January? 如果可能,我试图避免CASE语句。

DateTime2与SQL Server中的DateTime

哪一个: datetime datetime2 是SQL Server 2008+中存储date和时间的推荐方法? 我意识到精度(和存储空间大概)的差异,但是现在忽略这些差异,有什么时候使用什么的最佳实践文档,或者我们应该只使用datetime2 ?

如何删除sql server中的重复行?

如何删除没有唯一行ID的重复行? 我的桌子是 col1 col2 col3 col4 col5 col6 col7 john 1 1 1 1 1 1 john 1 1 1 1 1 1 sally 2 2 2 2 2 2 sally 2 2 2 2 2 2 重复删除后,我想留下以下内容: john 1 1 1 1 1 1 sally 2 2 2 2 2 2 我已经尝试了几个查询,但我认为他们依赖于行ID,因为我没有得到所需的结果。 例如: DELETE […]

如何使用TSQL获取数据库中所有表的列表?

在SQL Server的特定数据库中获取所有表的名称的最佳方法是什么?