考虑以下表格片段:
此特定表中有14列,所有未显示的列都可以,但从strength
列开始,所有值都已在一个序号位置向右移动。所以100MG应该是强度而不是days_sup,数量应该在days_sup列中,drug_class应该填充当前在H4B中的数据。最后,std_cost中逗号之前的所有内容都应该向左移动一列,而列右侧的所有内容都应保留在std_cost中。所以他们的表格看起来应该是什么样的片段(为了简洁而缩短):( SQL Server 2008)
strength days_sup drug_class dispfee std_cost
100MG 6 H4B 1.5 5.06
表中的此错误仅发生在整个表行的约.05%中,并且与条件一起发生 `其中std_cost喜欢'%,%'。 无论如何我可以一次更新所有这些列吗?我当时认为可以使用序列表和列的序数索引。
答案 0 :(得分:2)
如果我做对了 - 就像这样:
update t
SET strength=days_sup,
days_sup=quantity,
quantity=drug_class,
drug_class=fst_fill,
fst_fill=rfl_nbr,
rfl_nbr=prc_typ,
prc_typ=dispfee,
dispfee=SUBSTRING(std_cost,1,CHARINDEX(',',std_cost,1)-1)
std_cost=SUBSTRING(std_cost,CHARINDEX(',',std_cost,1)+1,100)
where std_cost like '%,%';
答案 1 :(得分:2)
由于您只有大约9列有问题,我会手动完成。像这样,
UPDATE YourTable
SET strength = days_sup
, days_sup = quantity
.....
, dispfee = LEFT( STD_COST, CHARINDEX(',',STD_COST) -1 )
, STD_COST = RIGHT (STD_COST, LEN(STD_COST) - CHARINDEX(',',STD_COST))
where std_cost like '%,%'