Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果为NULL,则改为传递空白_Sql - Fatal编程技术网

Sql 如果为NULL,则改为传递空白

Sql 如果为NULL,则改为传递空白,sql,Sql,我需要将数据从SQL表推送到JDE中的中间表。我遇到了null不能作为空格传递的问题。如何将空值替换为JDE中的空值 这是我更新SQLDB的语句: Insert into AP_InvoiceHeader (DocID,[Vendor Name],[Vendor No],[Invoice Number],[Invoice Date],[PO Number],[Invoice Amount],MVRUploadDate,DocName) values ({sys DocID},'{doc Ven

我需要将数据从SQL表推送到JDE中的中间表。我遇到了null不能作为空格传递的问题。如何将空值替换为JDE中的空值

这是我更新SQLDB的语句:

Insert into AP_InvoiceHeader
(DocID,[Vendor Name],[Vendor No],[Invoice Number],[Invoice Date],[PO Number],[Invoice Amount],MVRUploadDate,DocName)

values ({sys DocID},'{doc Vendor Name}','{doc Vendor No}','{doc Invoice Number}','{doc Invoice Date}','{doc PO Number}','{doc Invoice Amount}',GETDATE(),(select DocName from document where Docid={sys DocID}))
使用此语句,如果没有要传递的值,则在SQL中显示为NULL。还是在更新中间表时进行空到空的转换

这是我的语句,它从SQLDB中选择并将其插入中间JDE表。我知道我想做什么,但我不知道怎么写。我想说,如果[PO编号]=NULL,将其更改为空。是否有一种方法可以检查任何空值并用空值替换所有空值

 INSERT INTO [MyJDE_VENDOR].[PS_DEV].[TESTDTA].[F55METAA] ([MVMLNM],[MVAN8],[MVVR01],[MVVINV],[MVDIVJ],[MVAG],[MVTRDJ],[MVRMK3],[MV55MV],[MVUMEMO1])

    SELECT [Vendor Name],[Vendor No],[PO Number],[Invoice Number],cast('1'+ RIGHT(CAST(YEAR(cast([Invoice Date] as date)) AS CHAR(4)),2) + RIGHT('000' + CAST(DATEPART(dy, cast([Invoice Date] as date)) AS varchar(3)),3) as int) as [Invoice Date],[Invoice Amount]*100,cast('1'+ RIGHT(CAST(YEAR(cast([MVRUploadDate] as date)) AS CHAR(4)),2) + RIGHT('000' + CAST(DATEPART(dy, cast([MVRUploadDate] as date)) AS varchar(3)),3) as int) as [MVRUploadDate],[ProcessedFlag],[DocID],[DocName]

    FROM [MyDataBase].[dbo].[AP_InvoiceHeader] WHERE DocID ={sys DocID}

标准的SQL函数是coalesce。有点不清楚您希望将其用于哪些字段:

INSERT INTO [MyJDE_VENDOR].[PS_DEV].[TESTDTA].[F55METAA] ([MVMLNM],[MVAN8],[MVVR01],[MVVINV],[MVDIVJ],[MVAG],[MVTRDJ],[MVRMK3],[MV55MV],[MVUMEMO1])

SELECT coalesce([Vendor Name], ''),
       coalesce([Vendor No], ''), 
       coalesce([PO Number], ''),
       coalesce([Invoice Number], '')
       coalesce(cast('1'+ RIGHT(CAST(YEAR(cast([Invoice Date] as date)) AS CHAR(4)),2) + RIGHT('000' + CAST(DATEPART(dy, cast([Invoice Date] as date)) AS varchar(3)),3) as int) as [Invoice Date],[Invoice Amount]*100,cast('1'+ RIGHT(CAST(YEAR(cast([MVRUploadDate] as date)) AS CHAR(4)),2) + RIGHT('000' + CAST(DATEPART(dy, cast([MVRUploadDate] as date)) AS varchar(3)),3) as int) , '') as [MVRUploadDate],
       coalesce([ProcessedFlag], ''), 
       coalesce([DocID], ''), 
       coalesce([DocName], '')
FROM [MyDataBase].[dbo].[AP_InvoiceHeader]
WHERE DocID ={sys DocID}

在MS SQL SERVER中,如果专门针对null,则可以使用isnull函数

isnull(column,'')

听起来你在寻找联合。。。其他选项也取决于特定的RDBMS。我希望所有字段都使用此选项,以防发票没有采购订单号或供应商名称。我将编辑coalesce9[发票编号],以合并[发票编号],然后重试。事先谢谢你。有没有办法用它来反驳整个声明?选择[供应商名称],[供应商编号],[采购订单编号],[发票编号],将'1'+右CastYearCast[发票日期]转换为日期CHAR4,2+右'000'+CASTDATEPARTdy,将[发票日期]转换为日期varchar3,3 int转换为[发票日期],[发票金额]*100,将'1'+右CastYearCast[MVRUploadDate]转换为日期CHAR4,2+右'000'+CASTDATEPARTdy,转换为日期[MVRUploadDate]日期为varchar3,3 int为[MVRUploadDate],[ProcessedFlag],[DocID],[DocName]据我所知,您必须对每一列执行此操作。看起来您正在将所有列转换为字符串,所以此时您所要做的就是将这些列放入isnull函数:codeISNULL cast'1'+RightCastYearCastCast[Invoice date]将日期转换为CHAR4,2+右'000'+CASTDATEPARTdy,将[Invoice date]转换为日期varchar3,3转换为int,将[Invoice date]转换为代码[Invoice date]。标准做法是在应用程序中显示空格,并在数据库中保留空值。