将计算的jet-sql访问列转换为sql server
Posted
技术标签:
【中文标题】将计算的jet-sql访问列转换为sql server【英文标题】:convert jet-sql access column calculated into sql server 【发布时间】:2018-02-21 13:50:57 【问题描述】:如何在我的 sql server 列中转换这个计算列 ACCESS?
([VratePctg] < 0.05) Or (Abs([Amount1]) < 1) Or (Abs([Amount2]) < 1)
谢谢
【问题讨论】:
应该仍然可以在 sql server 中工作 T-SQL 没有布尔类型;因此,您无法将OR
计算为一个值。但是,您可以使用CASE WHEN <condition> THEN 1 ELSE 0 END
来实现相同的目的。巧合的是,其余的语法已经是有效的 T-SQL。
@JeroenMostert 最好将 1 和 0 更改为 convert(1, bit)
以确保类型安全
好的,你会怎么写?
ColumnName as CAST(CASE WHEN [VratePctg] < 0.05 Or Abs([Amount1]) < 1 Or Abs([Amount2]) < 1 THEN 1 ELSE 0 END As Bit)
【参考方案1】:
您的问题缺少上下文,但这里是一个具有以下条件的计算列的演示:
CREATE TABLE Demo
(
VratePctg decimal(5,2),
Amount1 int,
Amount2 int,
ComputedColumn AS CAST(CASE WHEN [VratePctg] < 0.05 Or Abs([Amount1]) < 1 Or Abs([Amount2]) < 1 THEN 1 ELSE 0 END As Bit)
)
测试:
INSERT INTO Demo(VratePctg, Amount1, Amount2) VALUES
(0.03, 2, 5),
(0.6, 7, 4),
(0.9, 0, 8),
(4.2, 9, 0)
SELECT *
FROM Demo
结果:
VratePctg Amount1 Amount2 ComputedColumn
0,03 2 5 True
0,60 7 4 False
0,90 0 8 True
4,20 9 0 True
You can see a live demo on rexteser.
【讨论】:
问题是我必须在两个计算列上进行计算,我必须替换表达式而不是列名。谢谢以上是关于将计算的jet-sql访问列转换为sql server的主要内容,如果未能解决你的问题,请参考以下文章
windows 2012服务器,sql serve 20112怎么开通1433端口
dbReadTable 将日期列从 SQL 数据库强制转换为字符