- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要通过带有 的 ODBC 构建 SQL 查询来读取 Excel 文件。 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
.
该查询需要SELECT
中的条件语句。表示“如果 A
页面中的列 TA
具有值 x
,则 R1
,否则 R2
”,R1
和 R2
是相同类型的值( 0
和 1
或 'ABC'
和 'DEF'
)。
与 CASE
它通常会给
SELECT CASE A WHEN x THEN R1 ELSE R2 END AS RA FROM TA;
SELECT CASE WHEN A = x THEN R1 ELSE R2 END AS RA FROM TA;
CASE
陈述。
IIF
陈述,
SELECT IIF (A = x, R1, R2) AS RA FROM TA;
CRecordset
对象,它在
Open
调用上失败,我没有做
DoFieldExchange
无处),
SWITCH
陈述
SELECT SWITCH (A = x, R1, true, R2) AS RA FROM TA;
CHOOSE
陈述
SELECT CHOOSE (1*(A = x), R1, R2) AS RA FROM TA;
RA = ...
尝试了所有这些查询。而不是
... AS RA
,无济于事。
[A]
是
TA
中的一列,
R1
和
R2
只需表达所需的值,在我的情况下,这些是文字值(分别为
72
和
70
)。我的查询也大得多,从
joins
请求多个列与
wheres
和
order by
,到目前为止,我的所有查询都运行良好,使用简单的
CRecordset
我会调用的对象
GetFieldValue
从。我添加条件语句以开始失败的任何查询。我已经对我的工作进行了广泛的调试,并且据我所知,查询的格式正确(没有丢失括号等)。我也不知道这些陈述是不受支持的;欢迎对我的语法进行更正。
TA.A
然后在代码中处理它的值,我不能使用 API 或不同的驱动程序来访问数据。
CDatabase *here_db = new CDatabase () ;
here_db->OpenEx ("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\\ExcelFile.xls") ;
CRecordset *here_rs = new CRecordset (here_db) ;
here_rs->Open (CRecordset::snapshot, "SELECT COUNT(*) FROM [TableA$]", CRecordset::readOnly) ;
//This works, btw.
int rowCount ;
CDBVariant v ;
here_rs->GetFieldValue ((short) 0, v, SQL_C_SLONG) ;
rowCount = v.m_lVal ;
here_rs->Close () ;
here_rs->Open (CRecordset::snapshot, CString (
"SELECT"
" CASE A"
" WHEN 'test' THEN 72"
" ELSE 70"
" END AS RA"
" FROM [TableA$]"
""), CRecordset::readOnly) ;
short i ;
int colCount ;
colCount = here_rs->GetODBCFieldCount () ;
CString h ("") ;
while (!here_rs->IsEOF ())
{
for (i = 0; i < c; i++)
{
here_rs->GetFieldValue (i, h) ;
}
here_rs->MoveNext () ;
}
here_rs->Close () ;
delete here_rs ;
here_db->Close () ;
delete here_db ;
return TRUE ;
if (!here_rs->Open (CRecordset::snapshot,
"SELECT"
" `A`,"
" IIF(`A` = x, 72, 70) AS RA"
" FROM `TableA$`"
"", CRecordset::readOnly))
{
__debugbreak () ;
}
最佳答案
在 Windows 环境中查询 Excel 工作簿将涉及 JET/ACE SQL 引擎(Windows .dll 文件),该引擎与 MS Access 中使用的引擎完全相同。由于此 SQL 方言不支持 ANSI 的 CASE
声明,最好的等价物是 IIF
function .从你的陈述中:
[A] IS a column in TA, R1 and R2 just express the desired values
IIF
如果使用字母数字,则表达式必须将测试和所需值视为带引号的文字。否则引擎假定它们是表中的字段。请注意:您可以在
IIF
中使用实际列.此外,为 TA 指定使用表别名。
SELECT IIF(TA.A = 'test', 'R1', 'R2') AS RA
FROM [TableA$] AS TA
SELECT IIF(TA.A = 'test', 72, 70) AS RA
FROM [TableA$] AS TA
关于sql - ODBC Excel SQL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55065382/
这个问题已经有答案了: what is the difference between OLE DB and ODBC data sources? (11 个回答) 已关闭10 年前。 OLEDB 和
我正在制作安装脚本并且我正在使用 ODBC,我如何自动将节点添加到 ODBC 数据源。 使用 Visual Studio 安装项目构建安装程序,但我能够为其运行任何脚本。 谢谢。 最佳答案 1) OD
所以我正在将一个旧的 filemaker 数据库传输到 MySQL,一些重复的字段给我带来了一些问题。我读过 ODBC 标准支持这些字段,只有当它们的类型是“文本”并且每个重复都与某个定界符( see
一个月前,我向一个哥们展示了如何使用 .NET 来查询 MySQL。它工作得很好,但他不明白为什么我们需要一个 MySQL 与 ODBC 结合的“驱动程序”。他认为 ODBC 就足够了。 当他问我为什
为什么 ODBC 很慢?底层架构是什么?有人可以对此多加关注> 最佳答案 一般来说(我的意思是 GENERAL)ODBC 驱动程序在混合中添加了另一层。它必须接受您的查询并将其转换为本地查询语言(本地
问题:我正在使用 AsteriskNow,它在 VirtualBox 中运行 asterisk 2.0 服务器。我想使用 ODBC 模块将 Asterisk 与 MySQL 数据库连接起来。但它失败了
我有一个名为“myodbc”的用户定义的 ODBC 连接,其中保存了用户名和密码。这是管理员为我创建的,因此我无法访问凭据。 如何在不传递凭据的情况下与 SAS 建立连接。我认为以下工作会,但我收到无
我最近发现 libname 语句对于访问驻留在 odbc 中的表非常方便。但我不知道如何访问那些具有两级名称的表。下面是一个例子。 我使用的旧代码(此代码有效): proc sql; conn
我们通常使用 MS Visual Foxpro v9.0 SP1、语言、表格和报告。但是,有时我们使用 ODBC 驱动程序连接到表。 ODBC 驱动程序是为 Foxpro v6 编写的,不支持某些嵌套
我第一次尝试在使用 PostgreSQL 9 的 Windows XP Pro 上打开一个程序。我收到一条错误消息: A problem was encountered while trying to
我有一个 spark 集群设置,并在我的数据集上尝试了 native scala 和 spark sql,该设置似乎在大多数情况下都有效。我有以下问题 从 ODBC/外部连接到集群,我应该期待什么?
我正在尝试为 Hive 设置 ODBC 连接。我按照以下步骤操作,但没有成功。 用户 DSN-->添加--> Hortonworks Hive ODBC 驱动程序--> 我提供了以下详细信息 主机:主
我找不到任何文档或示例。到目前为止,我可以成功连接,但是我不知道选择和返回数据的语法。 :odbc.start() {:ok, conn} = :odbc.connect('DSN=mydsn;UID
我正在阅读一篇有关数据透视缓存的 MS Excel 帮助文章,并想知道 OLE DB 和 ODBC 源 的含义 ...You should use the CommandText property i
从应用程序调用 SQLColAttribute 时出现 SQL_INVALID_HANDLE 错误(尝试与自行开发的 odbc 驱动程序通信)我不知道为什么句柄被声明为无效句柄,因为它是一个简单的结构
我有一个简单的 SQL,需要通过 ODBC 调用 RedShift。SQL是这样的 SELECT id as Tag From SomeView 这根本不起作用。它给了我错误 DataSource.E
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
从应用程序调用 SQLColAttribute 时出现 SQL_INVALID_HANDLE 错误(尝试与自行开发的 odbc 驱动程序通信)我不知道为什么句柄被声明为无效句柄,因为它是一个简单的结构
我有一个简单的 SQL,需要通过 ODBC 调用 RedShift。SQL是这样的 SELECT id as Tag From SomeView 这根本不起作用。它给了我错误 DataSource.E
我正在尝试使用 BIML 生成自动暂存区域。源数据库为Progress,通过ODBC连接。 我正在使用以下演练: https://www.cathrinewilhelmsen.net/2015/07/
我是一名优秀的程序员,十分优秀!