第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態(tài)列的 Progress-ODBC-TSQL CASE 語句正在截斷數(shù)據(jù)

動態(tài)列的 Progress-ODBC-TSQL CASE 語句正在截斷數(shù)據(jù)

C#
夢里花落0921 2022-06-12 10:57:23
我正在使用 ODBC 驅(qū)動程序通過 Windows C# 應(yīng)用程序連接到 Progress 數(shù)據(jù)庫。我遇到的問題是我的數(shù)據(jù)被截斷。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我的“狀態(tài)”列中只會出現(xiàn) 8 個字符,因此“處理中”變成“處理中”。我嘗試了各種強制轉(zhuǎn)換/轉(zhuǎn)換,例如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')無濟于事。如何讓完整的“進行中”出現(xiàn)在我的專欄中?這是我從 C# 查詢 Progress 數(shù)據(jù)庫的方法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 驅(qū)動程序:Vendor=DataDirect,Progress SQL92 v9.1E,版本 4.10.01。以下是其他用戶在評論中提供的此特定驅(qū)動程序的一些資源,此處和此處 此外,我能夠通過不使用嵌套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
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

澄清這個答案。雖然 OP 問題可以通過多個WHENin來解決CASE,但我的理解是這是偽代碼,OP需要子案例。在這種情況下,有一個錯誤 [我認(rèn)為] 會截斷字符串?dāng)?shù)據(jù)。下面的語法就是為了解決這個問題。我認(rèn)為,這個問題的價值在于數(shù)據(jù)切割而不是你可以使用多個WHEN


SELECT 

    CASE 

       WHEN myCol = 0 THEN 'Pending' 

        WHEN myCol = 1 THEN 'Completed' 

        ELSE 'In-Process' 

    END  Status

FROM

  (SELECT 

       CASE 

           WHEN (table1_qty_comp = 0) THEN 0 

           ELSE 

               CASE WHEN (table1_qty_comp >= table2_qty_req) THEN 1       

               ELSE 2 

               END

       END AS myCol

    FROM 

        table1 LEFT JOIN table2 ON table1_part = table2_part) t1


查看完整回答
反對 回復(fù) 2022-06-12
?
瀟湘沐

TA貢獻1816條經(jīng)驗 獲得超6個贊

Progress 數(shù)據(jù)庫將所有值存儲為可變長度,并且不支持任何寬度屬性。

Progress 4GL 非常樂意處理“過度填充”字段。這對于 Progress 應(yīng)用程序來說是正常的,但它適合 SQL 客戶端。

您正在運行 Progress 版本 9(它是古老的、過時的且不受支持的),因此您唯一的選擇是在客戶端上處理它(如帖子和 TS 的回答中所見)或運行提供的“dbtool”實用程序。dbtool 實用程序?qū)呙钄?shù)據(jù)庫并查找任何被過度填充的字段,然后調(diào)整“sql 寬度”,以便 SQL 客戶端準(zhǔn)確了解實際數(shù)據(jù)寬度。


查看完整回答
反對 回復(fù) 2022-06-12
  • 2 回答
  • 0 關(guān)注
  • 214 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號