在带有破折号的列上解除支点
本文关键字:支点 破折号 | 更新日期: 2023-09-27 18:17:43
这是我在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
我该如何解决这个问题?
更新1
如果有一种方法可以使用c#代码来实现,那也很好。因为这是一个从c#调用的存储过程,所以如果有解决方案可以在c#中处理这个问题,我也希望有。
取决于是否为常规模式,但至少:
INNER JOIN REC_ITEM AS P
on replace(p.REC_ITEM_NAME_A, ' ', '_') = upvt.ItemDesc
性能会很差。
您可以尝试以多种方式加入:
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, '_', ''), ' ', '')