C# 在上面有破折号的柱上取消打印
这是我在SQL Server 2008 R2中的查询:C# 在上面有破折号的柱上取消打印,c#,sql,sql-server,sql-server-2008-r2,C#,Sql,Sql Server,Sql Server 2008 R2,这是我在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 (
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的结果之间进行连接
问题发生在具有u like ABU ZEBED的列名中,其中REC_项中的值为ABU ZEBED
我怎样才能解决它呢
更新1
如果有一种方法可以使用c代码来实现这一点,那么它也很好。因为这是一个从c调用的存储过程,所以如果c中有解决方案,我也希望如此。您可以尝试以多种方式加入:
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, '_', ''), ' ', '')
取决于它是否是一种规则模式,但至少:
INNER JOIN REC_ITEM AS P
on replace(p.REC_ITEM_NAME_A, ' ', '_') = upvt.ItemDesc
不过,性能会很糟糕。我尝试了您的第一个解决方案,但仍然一样,我得到的是22而不是31。性能很差,有没有办法更正取消PIVOT的结果?有没有办法更改取消PIVOT的结果?您的解决方案仍然给我22个结果,而不是31@AgnieszkaPolec-您确定REC_项中的这些字符确实是空格,即char32吗?试着检查它的内容,比如这样:选择sq.Orig,sq.Upd,当sq.Orig=sq.Upd时,则从select r.rec_item_name_a as[Orig]中选择1作为[Equal],从rec_item r sq中选择replacer.rec_item_name_a,char32,char95作为[Upd];请忽略上一个。这应该是可行的:从rec_item中选择*,其中rec_item_name_a='ABU'+char32+'ZEBED';如果有什么东西会出现,那就意味着名称部分之间确实有一个普通的空格;如果不是,那就是其他角色。