我在从Microsoft Dynamics NAV复制的表中获取数据时遇到了一个小问题,特别是一个字段。
有一个字段以奇怪的格式存储提前期,作为一个新手,我想向我提出更聪明的建议。
后面跟着一个数字,我假设它代表“单位”。
到目前为止,我得到的字符表示在第2行和第2行使用了天数。在第1行和第1行中使用4和1周。 3
有人能告诉它是存储这类数据的一种“标准”方式吗?
告诉我如何将这些转化为天或指向正确的方向?
我相信我找到了一个解决方案,但它似乎非常难看!
解
SELECT
[ItmCode] AS [ItemCode],
[ItmDesc] AS [ItemDesc],
[ItmLead] AS [LeadTime_Orginal],
CASE WHEN ISNULL(ItmLead, '') ='' THEN 0 ELSE CHOOSE(ASCII(RIGHT(ItmLead, 1)), 0,1,0,7,0,0,0,0,0,0,0,0,0,0,0) * CAST(LEFT(ItmLead, LEN(ItmLead)-1) AS int) AS [LeadTimeInDays],
FROM dbo.nav_items;
非常感谢任何更好的解决方案!
答案 0 :(得分:0)
我相信我找到了一个解决方案,但它似乎非常难看!
在最后一个字符上使用SQL ASCII后,它返回了数字2和4,然后我使用CHOOSE来确定数字1和7的值。
让那些允许我将它乘以场的第一部分并实现我的目标。
<强>解强>
SELECT
[ItmCode] AS [ItemCode],
[ItmDesc] AS [ItemDesc],
[ItmLead] AS [LeadTime_Orginal],
CASE WHEN ISNULL(ItmLead, '') =''
THEN 0
ELSE CHOOSE(ASCII(RIGHT(ItmLead, 1)), 0,1,0,7,0,0) * CAST(LEFT(ItmLead, LEN(ItmLead)-1) AS int) AS [LeadTimeInDays],
FROM dbo.nav_items;
非常感谢任何更好的解决方案!