Tag: tsql

如果在T-SQL中存在

如果我们在一个IF EXISTS有一个SELECT语句,那么一旦它在表中find一条logging,执行就会停止吗? 例如: IF EXISTS(SELECT * FROM table1 WHERE Name='John' ) return 1 else return 0 如果表中存在一行的名称为= John,那么它会停止执行并返回1,还是遍历整个表寻找更多匹配?

SQL Server 2008上的唯一键与唯一索引

我有一个名为countries的表,我通过在SQL Server 2008 R2上创buildtypes为“唯一键”的“索引/键”来将country_name列定义为唯一的。 但是我有以下问题: 将创build“唯一键”types的“索引/键”自动创build此列上的非聚集索引? 如果将types从“唯一键”更改为“索引”,并将IsUnique值保持为“是”,那么会有什么区别吗? 所以为什么有两个选项“独特的钥匙”和“指数”,我认为这两个是相同的?

在还原SQL Server 2005数据库之后将用户链接到login

我希望在两台服务器之间移动一个数据库,我已经从第一台服务器上备份了数据库,并在第二台服务器上完成了数据库还原,到目前为止还是不错的。 然而,我们的应用程序使用了数据库中定义的大量数据库用户。 这些必须链接到master数据库中定义的login名。 我已经恢复数据库的服务器已经定义了所有的login,但是他们有不同的sids。 我不是一个T-SQL专家。 我认为sp_change_users_login是解决scheme的一部分,但我找不到如何让它自动链接恢复数据库中的所有用户到同名的login名。 我们为我们的应用程序使用的数据库创build脚本创build用户和login,但创buildlogin时不指定SID,因此出现此问题。 现在如果我有时间机器… (当我谷歌我得到很多点击,但他们大多是网站,不会让你看到的答案,而不必先注册在网站上。)

T-SQL和WHERE LIKE%参数%子句

我试图写一个使用WHERE LIKE'%text%'子句的语句,但是当我尝试使用文本参数时,我没有收到结果。 例如,这工作: SELECT Employee WHERE LastName LIKE '%ning%' 这将返回用户Flenning,Manning,Ningle等,但是这个声明不会: DECLARE @LastName varchar(max) SET @LastName = 'ning' SELECT Employee WHERE LastName LIKE '%@LastName%' 未find结果。 有什么build议么? 提前致谢。

应该使用什么样的数据types来存储散列

我知道基于SQL Server中不同的数据types,散列会有所不同。 一个支持Unicode另一个不行….等等(也是整理) 我使用char(32)作为数据types,但输出是奇怪的。 使用这个 select HASHBYTES('MD5','MD5Text') 给出了这个输出: 0xA891DB2DA259280A66FD5F35201CAB6A 什么时候 declare @h char(32) select @h=HASHBYTES('MD5','MD5Text') select @h,LEN(@h) 输出: </s>'Ы-ўY(fэ_5«j 所以我是SQL Server的新手。 任何人都可以,请告诉我什么样的数据types,我应该用来存储哈希?

SQLselect列表中的布尔expression式

我想创build一个SQLselect在MS SQL Server 2005中进行unit testing。基本思想是这样的: select'Test Name',foo ='Result'from bar where baz =(某些标准) 这个想法是,如果“富”列的值是“结果”,那么我会得到一个值为true / 1; 如果不是,我会得到假/ 0。 不幸的是,T-SQL不喜欢expression式; 它在等号上窒息。 是否有某种方法来评估SQLselect列表中的expression式并获得可返回的结果? (或者其他一些实现我想要的unit testing的方法?) 编辑:3伟大的答案,都围绕CASEbuild成。 我会接受这个信号,因为他得到最less的代表,因此最需要它。 :-) 谢谢大家。

为什么我不能在SQL Management Studio的开始/结束块中使用“创build模式”?

我生成了一个脚本,创build这个数据库的所有用户和模式,当我用CRE EXETS检查包装CREATE语句时,我发现它不允许CREATE SCHEMA调用在BEGIN / END块中运行。 它抱怨说这是无效的语法。 但是我可以自己运行这个命令。 代码示例如下。 我正在使用SQL Server 2008和Management Studio R2。 为什么这是无效的语法? –DROP SCHEMA [acme] IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme')) BEGIN CREATE SCHEMA [acme] AUTHORIZATION [dbo] END

SQL查询,如果值为null,则返回1

我有一个查询,返回在我们的系统中设置的汇率值。 不是每个订单都有一个汇率(currate.currentrate),所以它返回空值。 我可以得到它返回1而不是null? 像if语句这样的东西可能是: if isnull(currate.currentrate) then 1 else currate.currentrate 这是我的查询下面。 我非常感谢你的帮助! SELECT orderhed.ordernum, orderhed.orderdate, currrate.currencycode, currrate.currentrate FROM orderhed LEFT OUTER JOIN currrate ON orderhed.company = currrate.company AND orderhed.orderdate = currrate.effectivedate

从sql联合中删除重复项

我正在做一些基本的SQL我有几个表,使用联合(正确或错误) 但我需要删除重复。 有任何想法吗? select * from calls left join users a on calls.assigned_to= a.user_id where a.dept = 4 union select * from calls left join users r on calls.requestor_id= r.user_id where r.dept = 4

无法在sql server中删除和创build数据库

我正在使用SQL Server 2008,似乎无法删除并创build数据库。 我尝试了几种不同的方法,但是我最终总是失败,或者在创build之前尝试“使用”。 我目前的尝试是这样的。 use master; GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test') BEGIN DROP DATABASE [test]; END GO CREATE DATABASE [test]; GO use [test]; GO 在MS论坛上提出GO作为阻止select数据库时发生的一些问题的一种方法。 有了这个我目前得到的输出(与现有的同名数据库): 消息3702,级别16,状态4,行3 不能放弃数据库“testing”,因为它目前正在使用。 Ms1801,Level 16,State 3,Line 1 数据库'testing'已经存在。 select不同的数据库名称。 消息2714,级别16,状态6,2号线 数据库中已经有一个名为“staff_type”的对象。 最后2行重复我的数据库中的每个表。