标签: sql-server

我可以在SQL Server的视图中使用引用列的外键吗?

在SQL Server 2008中给出

TableA(A_ID, A_Data)
TableB(B_ID, B_Data)
ViewC(A_or_B_ID, A_or_B_Data)
Run Code Online (Sandbox Code Playgroud)

是否可以定义TableZ(A_or_B_ID, Z_Data)这样的Z.A_or_B_ID列被约束到在ViewC?中找到的值?可以使用外键来查看视图吗?

sql-server foreign-keys view

82
推荐指数
5
解决办法
6万
查看次数

如何在T-SQL中将datetime转换为字符串

我很惊讶不能在这里找到这个问题.

我有一个日期时间var,我想将它转换为一个字符串,以便我可以将它附加到另一个字符串.我希望它的格式可以很容易地转换回日期时间.

我怎样才能做到这一点?

(我想要日期部分和时间部分.)

t-sql sql-server

82
推荐指数
6
解决办法
28万
查看次数

如何删除日期时间值(SQL Server)的时间部分?

这是我使用的:

SELECT CAST(FLOOR(CAST(getdate() as FLOAT)) as DATETIME)
Run Code Online (Sandbox Code Playgroud)

我想可能会有更好更优雅的方式.

要求:

  • 它必须尽可能快(铸造越少越好).
  • 最终结果必须是datetime类型,而不是字符串.

sql-server datetime date-conversion

81
推荐指数
4
解决办法
6万
查看次数

Oracle:是否有一个跟踪查询的工具,比如Profiler for sql server?

我使用sql server,但我必须迁移到Oracle DB的应用程序.为了跟踪我的应用程序查询,在Sql Server中我使用了精彩的Profiler工具.是否有类似于Oracle的东西?

sql-server oracle profiler

81
推荐指数
7
解决办法
15万
查看次数

有没有办法访问SELECT语句中的"上一行"值?

我需要计算表格两行之间的列的差异.有什么方法可以直接在SQL中执行此操作吗?我正在使用Microsoft SQL Server 2008.

我正在寻找这样的东西:

SELECT value - (previous.value) FROM table
Run Code Online (Sandbox Code Playgroud)

想象一下"previous"变量引用了最新选择的行.当然,对于类似的选择,我最终将在具有n行的表中选择n-1行,这不是可能的,实际上正是我需要的.

这有可能吗?

sql sql-server sql-server-2008

81
推荐指数
5
解决办法
28万
查看次数

如何只用一个IDENTITY列插入表格?

(在尝试回答另一个问题的过程中提出这个问题)

考虑以下名为GroupTable的MS-SQL表:

GroupID
-------
1  
2  
3  

其中GroupID是主键,是Identity列.

如何在使用IDENTITY_INSERT ON的情况下在表中插入新行(从而生成新ID)?

请注意:

INSERT INTO GroupTable() Values ()   
Run Code Online (Sandbox Code Playgroud)

......不行.

编辑:我们在这里谈论SQL 2005或SQL 2008.

sql sql-server identity

81
推荐指数
2
解决办法
2万
查看次数

SQL服务器在where表达式中忽略大小写

如何构造SQL查询(MS SQL Server),其中"where"子句不区分大小写?

SELECT * FROM myTable WHERE myField = 'sOmeVal'
Run Code Online (Sandbox Code Playgroud)

我希望结果无视案例回来

sql sql-server case-insensitive where-clause

81
推荐指数
5
解决办法
13万
查看次数

SQL Server 2008空字符串与空格

今天早上我遇到了一些奇怪的事情,并认为我会提交评论.

有人可以解释为什么以下SQL查询在针对SQL 2008运行时打印"相等".数据库兼容级别设置为100.

if '' = ' '
    print 'equal'
else
    print 'not equal'
Run Code Online (Sandbox Code Playgroud)

这返回0:

select (LEN(' '))
Run Code Online (Sandbox Code Playgroud)

它似乎是自动修剪空间.我不知道在以前版本的SQL Server中是否就是这种情况,我不再需要测试它.

我遇到了这个,因为生产查询返回了错误的结果.我无法在任何地方找到这种行为.

有没有人有这方面的任何信息?

t-sql sql-server string-length sql-server-2008 datalength

81
推荐指数
4
解决办法
3万
查看次数

数十亿行的最佳数据存储

我需要能够为数十亿条记录存储少量数据(大约50-75字节)(一年约30亿/月).

唯一的要求是对具有相同GUID的所有记录进行快速插入和快速查找,并且能够从.net访问数据存储.

我是一个SQL服务器人,我认为SQL Server 可以做到这一点,但随着所有关于BigTable,CouchDB和其他nosql解决方案的讨论,它听起来越来越像传统RDBS的替代品可能是最好的,因为优化分布式查询和扩展.我尝试了cassandra,.net库目前没有编译或者都可以更改(以及cassandra本身).

我已经研究了许多可用的nosql数据存储,但找不到满足我作为强大的生产就绪平台的需求.

如果你必须存储360亿个小而扁平的记录,以便它们可以从.net访问,那会选择什么以及为什么?

sql-server nosql

81
推荐指数
4
解决办法
5万
查看次数

SQL Server字符串连接与Null

我正在创建一个跨越字段的计算列,其中一些可能为null.

问题是如果这些字段中的任何一个为null,则整个计算列将为null.我从Microsoft文档中了解到这是预期的,可以通过SET CONCAT_NULL_YIELDS_NULL设置关闭.但是,我不想更改此默认行为,因为我不知道它对SQL Server其他部分的影响.

有没有办法让我只检查一列是否为空,如果它不为空,只在计算列公式中附加其内容?

sql-server null string-concatenation calculated-columns

81
推荐指数
7
解决办法
13万
查看次数