我们正在用VB.NET和SQL Server重写我们的旧会计系统.我们引入了一个新的.NET/SQL程序员团队来进行重写.大多数系统已经使用Floats完成了Dollar数量.我编程的遗留系统语言没有Float,所以我可能会使用Decimal.
你有什么建议?
Float或Decimal数据类型应该用于美元金额吗?
两者的优点和缺点有哪些?
在我们的日常scrum中提到的一个骗局是,当你计算一个返回超过两个小数位的结果的金额时,你必须要小心.听起来你必须将金额四舍五入到小数点后两位.
另一个Con是所有显示和打印金额必须有一个显示两个小数位的格式声明.我注意到有几次没有这样做,金额看起来不正确.(即10.2或10.2546)
专家是Float只占用磁盘上的8个字节,其中Decimal占用9个字节(十进制12,2)
我有一些表,我作为报告汇总的一部分构建.之后我根本不需要它们.有人提到截断它们会更快.
我们遇到了一个代码块的问题,这个代码块在数据库缓慢的情况下响应很差(它在查询超时时瘫痪).我们已经创建了一个补丁,并且正在通过回归运行它.
我们不能超时.我已经从SQL Mgmt Studio打开了一个事务并更新了每一行来锁定它们,但这并不会导致INSERT超时(这就是我需要的).
我可以通过T-SQL轻松获得表级锁吗?或者我必须在主人身边摆弄?或者我可以轻松强制超时而不锁定?任何输入都表示赞赏.
@Column(name="open")
Run Code Online (Sandbox Code Playgroud)
使用sqlserver方言与hibernate.
[SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null, creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null, sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid))
[SchemaUpdate] Incorrect syntax near the keyword 'open'.
Run Code Online (Sandbox Code Playgroud)
我希望hibernate在创建表时使用带引号的标识符.
关于如何处理这个问题的任何想法...除了重命名字段?
我有一个我正在查询的视图,看起来像这样:
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
我想VARCHAR在SQL Server表的特定列中找到最长的.
这是一个例子:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
Run Code Online (Sandbox Code Playgroud)
什么是返回3的SQL?由于最长的值是3个字符?
我想从c#代码批量上传csv文件数据到sql server 2005,但我遇到以下错误 -
从bcp客户端收到colid 6的无效列长度.
批量复制写入数据库服务器时
当我尝试将tSQLt安装到现有数据库时,我收到以下错误:
记录在主数据库中的数据库所有者SID与记录在数据库''中的数据库所有者SID不同.您应该通过使用ALTER AUTHORIZATION语句重置数据库''的所有者来纠正这种情况.
运行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)
还有什么值得关注的东西,可能值得指点或帮助解决这个问题吗?似乎无法深究它.