我正在使用 ODBC 驱动程序通过 Windows C# 应用程序连接到 Progress 数据库。我遇到的问题是我的数据被截断。
SELECT
CASE
WHEN (table1_qty_comp = 0) THEN 'Pending'
ELSE
CASE WHEN (table1_qty_comp >= table2_qty_req) THEN 'Completed'
ELSE 'In-Process'
END
END AS 'Status'
FROM
table1 LEFT JOIN table2 ON table1_part = table2_part
我的“状态”列中只会出现 8 个字符,因此“处理中”变成“处理中”。
我尝试了各种强制转换/转换,例如
cast('In-Process' as varchar)
cast('In-Process' as varchar(12))
cast('In-Process' as nvarchar)
cast('In-Process' as nvarchar(12))
convert(varchar(12), 'In-Process')
convert(nvarchar(12), 'In-Process')
str('In-Process')
无济于事。如何让完整的“进行中”出现在我的专栏中?
这是我从 C# 查询 Progress 数据库的方法
DataTable dt = new DataTable();
try
{
using (OdbcConnection conn = new OdbcConnection(GetConnectionString(db)))
{
OdbcCommand cmd = new OdbcCommand(qry, conn);
conn.Open();
OdbcDataAdapter adpt = new OdbcDataAdapter(cmd);
adpt.Fill(dt);
}
}
catch (OdbcException e)
{
}
return dt;
更新
我想用什么可能有用的信息来附加我的问题...这是 ODBC 驱动程序:Vendor=DataDirect,Progress SQL92 v9.1E,版本 4.10.01。以下是其他用户在评论中提供的此特定驱动程序的一些资源,此处和此处 此外,我能够通过不使用嵌套CASE语句来解决我的问题,例如:
SELECT
CASE
WHEN (table1_qty_comp = 0) THEN 'Pending'
WHEN (table1_qty_comp >= table2_qty_req) THEN 'Completed'
ELSE 'In-Process'
END AS 'Status'
FROM
table1 LEFT JOIN table2 ON table1_part = table2_part
白板的微信
潇湘沐
相关分类