这是我在SQL Server 2008 R2中的查询:
INSERT VMP_Staging_Products_Temporary
(FRM_ID, ITEM_ID, ItemDesc, NUMBER_ITEM)
SELECT upvt.FARM_ID,
p.REC_ITEM_CODE,
p.REC_ITEM_NAME_A,
upvt.NUMBER_ITEM
FROM VMP_Staging AS f
UNPIVOT
(
NUMBER_ITEM
FOR ItemDesc IN ([KHALAS], [FARDH], [OTHER_LULU], [KHENAIZI], [BOUMAAN], [BARHI], [JESH_KHARMA], [REZIZ]
, [JABRI], [ANBARET_AL_MADINA], [SHISHI], [DABBAS], [NABTET_SAIF], [KHEDRAWI], [HILALI], [MAKTOUMY]
, [NAMISHI], [SULTANAH], [BAQLAT_AL_TAWAA], [BAQLAT_AL_DAHLA], [BAQLAT_AL_RARENJA], [SUKARY], [SAQEI], [ABU_ZEBED]
, [MAJDOUL], [SHABIBI], [YOUWANI], [YARDI], [KHADI], [HATIMI], [NEGHAL], [OTHER_SAYER])
) AS upvt
INNER JOIN REC_ITEM AS P
on p.REC_ITEM_NAME_A = upvt.ItemDesc
如您所见,我正在REC_ITEM
表和unpivot的结果之间进行连接。
问题出现在_
ABU_ZEBED
的列名称中,REC_ITEM
中的值为abu zebed
我该如何解决?
如果有办法使用c#代码,那也很好。因为这是一个从c#调用的存储过程,所以如果有解决方案在c#中处理这个问题,我也希望如此。
答案 0 :(得分:1)
取决于它是否是常规模式,但至少是:
INNER JOIN REC_ITEM AS P
on replace(p.REC_ITEM_NAME_A, ' ', '_') = upvt.ItemDesc
但是,表演会很糟糕。
答案 1 :(得分:0)
您可以尝试以多种方式加入:
on p.REC_ITEM_NAME_A = upvt.ItemDesc or
p.REC_ITEM_NAME_A = replace(upvt.ItemDesc, '_', ' ')
或者,从两侧移除空格和下划线:
on replace(replace(p.REC_ITEM_NAME_A, '_', ''), ' ', '') =
replace(replace(upvt.ItemDesc, '_', ''), ' ', '')