Tag: tsql

在SQL中是否有“LIKE”和“IN”的组合?

在SQL中(可悲的是)经常不得不使用“ LIKE ”条件,因为数据库几乎违反了每个规范化的规则。 我现在无法改变。 但这与问题无关。 此外,我经常使用WHERE something in (1,1,2,3,5,8,13,21)条件来提高我的SQL语句的可读性和灵活性。 有没有可能把这两件事情结合起来而不写复杂的子select? 我想要像WHERE something LIKE ('bla%', '%foo%', 'batz%')东西一样简单WHERE something LIKE ('bla%', '%foo%', 'batz%')而不是 WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%' 我正在与SQl服务器和Oracle在这里工作,但我很感兴趣,如果这在任何RDBMS中都是可能的。

如何使用T-SQL临时禁用外键约束?

禁用和启用SQL Server中支持的外键约束? 或者是我唯一的select,然后重新create约束?

如何用年,月,日计算T-SQL中的年龄

在T-SQL(SQL Server 2000)中,以年,月,日计算某人年龄的最佳方法是什么? date的function不能很好地处理年份的边界,再加上把月份和date分开就是一个熊。 我知道我可以在客户端比较容易地做到这一点,但我希望在我的存储过程中完成 。

将包含逗号分隔值的varchar传递给SQL Server IN函数

重复的 dynamicSQL逗号分隔值查询 使用Like和In参数化查询 我有一个SQL Server存储过程,我想通过一个varchar充满逗号分隔值到IN函数。 例如: DECLARE @Ids varchar(50); SET @Ids = '1,2,3,5,4,6,7,98,234'; SELECT * FROM sometable WHERE tableid IN (@Ids); 这当然不行。 我得到的错误: 将varchar值“1,2,3,5,4,6,7,98,234”转换为数据typesint时转换失败。 我怎样才能做到这一点(或类似的东西),而不诉诸build设dynamicSQL?

如何在SQL Server 2005中的一个语句中更新两个表?

我想一次更新两个表格。 我如何在SQL Server 2005中做到这一点? UPDATE Table1, Table2 SET Table1.LastName='DR. XXXXXX', Table2.WAprrs='start,stop' FROM Table1 T1, Table2 T2 WHERE T1.id = T2.id AND T1.id = '010008'

在NULL上不等于<>!=运算符

有人可以请解释在SQL中的以下行为? SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results) SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results) SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)

检查SQL Server中是否存在表

我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。 当你回答Google时,你会得到很多不同的答案。 有没有官方/向前兼容的方式来做到这一点? 这里有两种可能的方式来做到这一点。 哪一个是标准/最好的方法呢? 第一种方法: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='mytablename') SELECT 1 AS res ELSE SELECT 0 AS res; 第二种方式: IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL SELECT 1 AS res ELSE SELECT 0 AS res; MySQL提供了简单的SHOW TABLES LIKE'%tablename%' ; 声明。 我正在寻找类似的东西。

多个列的SQL MAX?

你如何返回每列最多几列的1个值: 表名 [Number, Date1, Date2, Date3, Cost] 我需要返回这样的东西: [Number, Most_Recent_Date, Cost] 查询?

获得每个组的前1行

我有一张表,我想要得到每个组的最新条目。 这是表格: DocumentStatusLogs表 |ID| DocumentID | Status | DateCreated | | 2| 1 | S1 | 7/29/2011 | | 3| 1 | S2 | 7/30/2011 | | 6| 1 | S1 | 8/02/2011 | | 1| 2 | S1 | 7/28/2011 | | 4| 2 | S2 | 7/30/2011 | | 5| 2 | S3 […]

表名称作为variables

我正在尝试执行此查询: declare @tablename varchar(50) set @tablename = 'test' select * from @tablename 这会产生以下错误: Msg 1087,Level 16,State 1,Line 5 必须声明表variables“@tablename”。 什么是dynamic填充表名称的正确方法?