Sql 将表列的顺序索引向左移动
请考虑以下表格片段: 此特定表格中有14列,未显示的所有列都可以,但从Sql 将表列的顺序索引向左移动,sql,sql-server,tsql,Sql,Sql Server,Tsql,请考虑以下表格片段: 此特定表格中有14列,未显示的所有列都可以,但从强度列开始,所有值都已按顺序向右移动了一个位置。所以100MG应该是强度,而不是天数,数量应该在天数栏中,药物类别应该用H4B中当前的数据填充。最后,std_cost中逗号之前的所有内容都应该放在左侧的一列中,列右侧的所有内容都应该放在std_cost中。所以他们的表应该是什么样子的一个片段(为了简洁起见缩短):(SQLServer2008) 表中的此错误仅发生在整个表中约.05%的行中,并且在条件下发生 `其中std_的成
强度列开始,所有值都已按顺序向右移动了一个位置。所以100MG应该是强度,而不是天数,数量应该在天数栏中,药物类别应该用H4B中当前的数据填充。最后,std_cost中逗号之前的所有内容都应该放在左侧的一列中,列右侧的所有内容都应该放在std_cost中。所以他们的表应该是什么样子的一个片段(为了简洁起见缩短):(SQLServer2008)
表中的此错误仅发生在整个表中约.05%的行中,并且在条件下发生
`其中std_的成本类似于“%”、%”。
我是否可以一次更新所有这些列?我在想,使用序列表和列的顺序索引可能是可行的。如果我做得对的话,可以这样做:
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 '%,%';
由于您只有大约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 '%,%'
当使用查询std_cost(如“%”、%”)时,是否使用相同的查询来提取数据列,或使用不同的查询?我使用相同的查询,但没有使用where子句筛选器。只要where子句过滤器在update查询中,任何正常的操作都不会受到影响。想想看,我本来打算让自己更难做到这一点+1提供了一个更好、更简单的解决方案。
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 '%,%'