标签: t-sql

在SQL Server中从十进制中删除尾随零

我有一个列,DECIMAL(9,6)即它支持像999,123456这样的值.

但是当我插入像123,4567这样的数据时,它变成了123,456700

如何删除那些零?

sql t-sql formatting decimal sql-server-2008

77
推荐指数
7
解决办法
21万
查看次数

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

使用SQL Server选择更新

我使用的是隔离级别的Microsoft SQL Server 2005数据库READ_COMMITTEDREAD_COMMITTED_SNAPSHOT=ON.

现在我想用:

SELECT * FROM <tablename> FOR UPDATE
Run Code Online (Sandbox Code Playgroud)

...以便在尝试访问同一行"FOR UPDATE"时阻止其他数据库连接.

我试过了:

SELECT * FROM <tablename> WITH (updlock) WHERE id=1
Run Code Online (Sandbox Code Playgroud)

...但是即使选择"1"以外的ID,这也会阻止所有其他连接.

SELECT FOR UPDATE对于Oracle,DB2,MySql而言,这是正确的提示吗?

编辑2009-10-03:

这些是创建表和索引的语句:

CREATE TABLE example ( Id BIGINT NOT NULL, TransactionId BIGINT, 
    Terminal BIGINT, Status SMALLINT );
ALTER TABLE example ADD CONSTRAINT index108 PRIMARY KEY ( Id )
CREATE INDEX I108_FkTerminal ON example ( Terminal )
CREATE INDEX I108_Key ON example ( TransactionId )
Run Code Online (Sandbox Code Playgroud)

很多并行进程都这样做SELECT:

SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 read-committed-snapshot

76
推荐指数
6
解决办法
17万
查看次数

如何计算SQL Server中两个日期之间的小时(十进制)差异?

我必须计算SQL Server 2008中两个日期之间的小时数(十进制类型).

在MSDN上使用'CONVERT'将datetime转换为十进制时,我找不到任何有用的技术.
任何人都可以帮助我吗?

更新:
要清楚,我也需要小数部分(因此十进制类型).所以从9点到10点30分它应该还给我1.5.

t-sql sql-server datetime decimal

76
推荐指数
3
解决办法
21万
查看次数

聚集索引必须是唯一的吗?

如果聚簇索引不是唯一的,会发生什么?是否会导致性能不佳,因为插入的行会流向某些类型的"溢出"页面?

它是"独特的",如果是这样的话怎么样?使它独一无二的最佳方法是什么?

我问,因为我目前正在使用聚集索引来划分逻辑部分中的表,但性能是如此,最近我得到使我的聚簇索引唯一的建议.我想就此发表第二个意见.

谢谢!

sql t-sql database clustered-index sql-server-2008

76
推荐指数
3
解决办法
6万
查看次数

T-SQL是否具有连接字符串的聚合函数?

可能重复:
SQL Server 2000中的内嵌类型函数?
连接行值T-SQL

我有一个我正在查询的视图,看起来像这样:

BuildingName    PollNumber
------------    ----------
Foo Centre      12        
Foo Centre      13
Foo Centre      14
Bar Hall        15
Bar Hall        16
Baz School      17
Run Code Online (Sandbox Code Playgroud)

我需要编写一个将BuildingNames组合在一起的查询,并显示一个PollNumbers列表,如下所示:

BuildingName    PollNumbers
------------    -----------
Foo Centre      12, 13, 14
Bar Hall        15, 16
Baz School      17
Run Code Online (Sandbox Code Playgroud)

我怎么能在T-SQL中做到这一点?我宁愿不为此写一个存储过程,因为它看起来有点矫枉过正,但我​​不是一个数据库人.看起来像SUM()或AVG()这样的聚合函数是我需要的,但我不知道T-SQL是否有一个.我正在使用SQL Server 2005.

t-sql sql-server group-by sql-server-2005 aggregate-functions

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

SQL - 将varchar数据类型转换为日期时间数据类型会导致超出范围的值

运行SQL到我的数据类型值从转换的时候,我一直得到以下错误varchardatetime.

消息242,级别16,状态3,行1将varchar数据类型转换为日期时间数据类型导致超出范围的值.

我已经检查了数据并且看不到任何奇怪的东西:执行以下检查并且所有返回都没有结果

SELECT [Date] from table where [DATe] is null
SELECT [Date] from table where [DATe] = ''
SELECT [Date] from table where LEN([date])> 10
SELECT [Date] from table where LEN([date])< 10
SELECT top 100 [Date] , SUBSTRING([date],4,2) from [table where convert(int, SUBSTRING([date],4,2)) < 1 or convert(int, SUBSTRING([date],4,2)) > 12
SELECT top 100 [Date] , SUBSTRING([date],1,2) from table where convert(int, SUBSTRING([date],4,2)) < 1 or convert(int, SUBSTRING([date],4,2)) > 31
Run Code Online (Sandbox Code Playgroud)

还有什么值得关注的东西,可能值得指点或帮助解决这个问题吗?似乎无法深究它.

t-sql sql-server datetime

76
推荐指数
6
解决办法
50万
查看次数

确定SQL Server数据库大小

SQL Server 2005/2008 Express版每个数据库的限制为4 GB.据我所知,数据库引擎仅考虑数据,因此不包括日志文件,未使用的空间和索引大小.

获取MDF文件的长度不应在SQL Server限制方面提供正确的数据库大小.我的问题是如何获得数据库大小?

t-sql sql-server

75
推荐指数
6
解决办法
11万
查看次数

获取数据库中的表和每个字段的列表

我正在寻找创建一个基本的ORM(纯粹是为了好玩),并且想知道,有没有办法返回数据库中的表列表以及每个表的字段?

使用这个,我希望能够循环遍历结果集(在C#中),然后对结果集中的每个表说,执行此操作(例如,使用反射来创建将执行或包含xyz的类).

除此之外,SQL Server的一些优秀在线博客是什么?我知道这个问题实际上是关于在Sql Server中使用系统SP和数据库,我对一般查询没问题,所以我对一些涵盖这种功能的博客感兴趣.

谢谢

sql t-sql

75
推荐指数
5
解决办法
23万
查看次数

SQL视图 - 没有变量?

是否可以在视图中声明变量?例如:

Declare @SomeVar varchar(8) = 'something'
Run Code Online (Sandbox Code Playgroud)

给我语法错误:

关键字'Declare'附近的语法不正确.

t-sql

75
推荐指数
4
解决办法
15万
查看次数