在txt文件中使用开关-h-1时发生转换错误



我编写了一个windows批处理脚本,从POS系统下载库存,然后将其上传到另一个文件。我在上传过程中一直遇到错误,我最终发现这是因为在标题下面的txt文件中生成了连字符:

sku                quantity
------------------------------
1234                 1

我可以使用开关-h-1删除整个标头,但在尝试重新添加标头(不带连字符(时,我遇到了数据转换错误。请参阅下面的sql。错误消息显示:"将数据类型varchar转换为数字时出错",第3行

set nocount on
SELECT 'sku' AS sku, 'quantity' AS sku
UNION
SELECT  CAST(IM_BARCOD.BARCOD AS VARCHAR(32)) as sku, case when 
IM_INV.QTY_AVAIL > 0 then IM_INV.QTY_AVAIL else CAST(0 AS VARCHAR(32)) END as 
quantity
FROM        IM_BARCOD INNER JOIN IM_INV ON IM_INV.ITEM_NO = IM_BARCOD.ITEM_NO 
INNER JOIN 
IM_PRC ON IM_INV.ITEM_NO = IM_PRC.ITEM_NO INNER JOIN 
IM_ITEM ON IM_INV.ITEM_NO = IM_ITEM.ITEM_NO
WHERE   (IM_ITEM.TRK_METH = 'N' AND IM_INV.LOC_ID = 'MAIN')
UNION
SELECT  CAST(IM_BARCOD.BARCOD AS VARCHAR(32)) as sku, case when 
IM_INV_CELL.QTY_AVAIL > 0 then IM_INV_CELL.QTY_AVAIL else CAST(0 AS 
VARCHAR(32)) END as quantity
FROM        IM_BARCOD INNER JOIN IM_PRC ON IM_BARCOD.ITEM_NO = IM_PRC.ITEM_NO 
INNER JOIN 
IM_INV_CELL ON IM_BARCOD.ITEM_NO = IM_INV_CELL.ITEM_NO AND 
IM_INV_CELL.DIM_1_UPR=IM_BARCOD.DIM_1_UPR AND 
IM_INV_CELL.DIM_2_UPR=IM_BARCOD.DIM_2_UPR AND 
IM_INV_CELL.DIM_3_UPR=IM_BARCOD.DIM_3_UPR INNER JOIN 
IM_ITEM ON IM_BARCOD.ITEM_NO = IM_ITEM.ITEM_NO
WHERE   (IM_ITEM.TRK_METH = 'G' AND IM_INV_CELL.LOC_ID = 'MAIN')

然而,我正在尝试将数字字段转换为varchar。有什么想法吗?我正在尝试这个基于另一个来自堆栈溢出的帖子。

谢谢!

在行中:

case when IM_INV.QTY_AVAIL > 0 then IM_INV.QTY_AVAIL else CAST(0 AS VARCHAR(32)) END

您需要在THEN子句中将qty_avail强制转换为varchar(32)。否则,它将尝试将该列隐式转换为数字数据类型。

最新更新