在 SQL Server 中更改列数据
Posted
技术标签:
【中文标题】在 SQL Server 中更改列数据【英文标题】:Changing column data in SQL Server 【发布时间】:2016-08-11 04:29:06 【问题描述】:我正在寻找一种方法来从现有查询列更改/创建一个新列以用于乘法字符串。
我原来的专栏是这样的:
parttype_name
---------------
MY 4KXDVV F H
MY 4KXDVV F H
MY 4KXDVV F H
MY 4KXDVV F H
A4 4BXDCV C X
A4 4BXDCV C X
A4 4BXDCV C X
A4 4BXDCV C X
A4 4BXDCV C X
我要的是在一个字符串中找到一种简单的方法(如果可能的话)为下一个数据更新/创建新列:(如果列数据是“MY 4KXDVV F H”,则将其更新为 H5,如果'A4 4BXDCV C X' 然后将其更新为 X3... 并拥有所有列字符串。
谢谢,
【问题讨论】:
没有得到,'MY 4KXDVV F H' 然后将其更新为 H5 - 使用 H5 更新将是特定值? 你能解释一下更新的逻辑吗?还是硬编码? 请详细说明为什么H5
以及为什么X3
。
所有来自 power pivot 上的查询的数据,我需要将所有“FH”行合并为一行。我认为编辑查询结果的最佳选择。
@Coldfire 这个H5、X3等的逻辑是什么??如果您分享逻辑 - 有人可能会提供答案
【参考方案1】:
如果你有更多没有,我会建议你。的记录然后获取不同的值(parttype_name),然后使用 while 循环或创建游标以使用特定值更新所有这些值,例如您的示例 H5 和 H4。
UPDATE TableName
SET parttype_name = REPLACE(parttype_name, @variablename, @updatevalue)
这里,@variablename 和 @updatevalue 将是变量,您可以使用一些逻辑来动态更改 @updatevalue 的值。
如果您需要更多帮助,请告诉我。
【讨论】:
是的,我还有更多,由于权限问题,我无法更新表格。如何使用您的 while 循环创建新的更新列? (+ 表示多个部分类型,表示语法应该是什么样子)【参考方案2】:你可以试试这样的replace功能:
select parttype_name,
replace(parttype_name,'MY','H5') as edited_parttype_name
from MyTable
编辑: 您可以嵌套调用来替换,如下所示:
select parttype_name,
replace(
replace(
replace(parttype_name,
'MY','H5'),
'YY','H4'),
'ZZ','H3')
as edited_parttype_name
from MyTable
只需注意左括号
【讨论】:
好像他需要做更多的工作来找出唯一值并进行更长的查询来更新那些动态值...... 我可以在一个代码行中使用多个参数吗?例如添加到它 replace(parttype_name,YY,'H4') as modified_parttype_name【参考方案3】:也许你想要CASE STATEMENT
SELECT
parttype_name,
CASE parttype_name
WHEN 'MY 4KXDVV F H' THEN 'H5'
WHEN 'A4 4BXDCV C X' THEN 'X3'
--WHEN '' THEN ''
END
FROM
your_table;
【讨论】:
好像他需要做更多的工作来找出唯一值并进行更长的查询来更新那些动态值以上是关于在 SQL Server 中更改列数据的主要内容,如果未能解决你的问题,请参考以下文章
根据 SQL Server 2008 R2 中特定列中的模式更改对行进行分组
为 SQL Server 抓取数据时更改 mySQL 表并添加列是不是正常? [关闭]
使用导入导出向导将数据从 Excel 导入 Sql Server 时,如何更改列的默认 varchar 255?
根据表中另一个现有列的内容更改 SQL Server 中的现有列