我有一个列,DECIMAL(9,6)即它支持像999,123456这样的值.
但是当我插入像123,4567这样的数据时,它变成了123,456700
如何删除那些零?
我对计算Levenshtein距离的T-SQL算法感兴趣.
我使用的是隔离级别的Microsoft SQL Server 2005数据库READ_COMMITTED和READ_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
我必须计算SQL Server 2008中两个日期之间的小时数(十进制类型).
在MSDN上使用'CONVERT'将datetime转换为十进制时,我找不到任何有用的技术.
任何人都可以帮助我吗?
更新:
要清楚,我也需要小数部分(因此十进制类型).所以从9点到10点30分它应该还给我1.5.
我有一个我正在查询的视图,看起来像这样:
Run Code Online (Sandbox Code Playgroud)BuildingName PollNumber ------------ ---------- Foo Centre 12 Foo Centre 13 Foo Centre 14 Bar Hall 15 Bar Hall 16 Baz School 17
我需要编写一个将BuildingNames组合在一起的查询,并显示一个PollNumbers列表,如下所示:
Run Code Online (Sandbox Code Playgroud)BuildingName PollNumbers ------------ ----------- Foo Centre 12, 13, 14 Bar Hall 15, 16 Baz School 17
我怎么能在T-SQL中做到这一点?我宁愿不为此写一个存储过程,因为它看起来有点矫枉过正,但我不是一个数据库人.看起来像SUM()或AVG()这样的聚合函数是我需要的,但我不知道T-SQL是否有一个.我正在使用SQL Server 2005.
t-sql sql-server group-by sql-server-2005 aggregate-functions
运行SQL到我的数据类型值从转换的时候,我一直得到以下错误varchar来datetime.
消息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)
还有什么值得关注的东西,可能值得指点或帮助解决这个问题吗?似乎无法深究它.
SQL Server 2005/2008 Express版每个数据库的限制为4 GB.据我所知,数据库引擎仅考虑数据,因此不包括日志文件,未使用的空间和索引大小.
获取MDF文件的长度不应在SQL Server限制方面提供正确的数据库大小.我的问题是如何获得数据库大小?
我正在寻找创建一个基本的ORM(纯粹是为了好玩),并且想知道,有没有办法返回数据库中的表列表以及每个表的字段?
使用这个,我希望能够循环遍历结果集(在C#中),然后对结果集中的每个表说,执行此操作(例如,使用反射来创建将执行或包含xyz的类).
除此之外,SQL Server的一些优秀在线博客是什么?我知道这个问题实际上是关于在Sql Server中使用系统SP和数据库,我对一般查询没问题,所以我对一些涵盖这种功能的博客感兴趣.
谢谢
是否可以在视图中声明变量?例如:
Declare @SomeVar varchar(8) = 'something'
Run Code Online (Sandbox Code Playgroud)
给我语法错误:
关键字'Declare'附近的语法不正确.