如何使用SQL Server
更改表格列的名称。
数据库表如下所示:
|第1栏|第2栏|第3栏| Q115($)| Q215($)| Q315($)| .... | QXYY($)|
随着时间的推移添加新列的格式为" Quarter" +" Year" +"($)"
我想编写一个在Microsoft SQL Server中执行以下操作的查询:
对于包含"($)":
的所有列将列的名称从QXYY($)更改为20YY QX
答案 0 :(得分:0)
更改列名可能是您想手动执行的操作,而不是批量更改。您可以使用sys.all_columns
表格获取数据库中所有表格中所有列的列表,例如
select all_objects.name as Table_nm, all_columns.name as Column_nm
from sys.all_columns
inner join sys.all_objects
on all_objects.object_id = all_columns.object_id
where all_columns.name like '%$%'
看起来重命名列是通过存储过程完成的,因此您可以使用该查询的输出创建一串其他查询来更新所有违规记录。 https://msdn.microsoft.com/en-us/library/ms188617.aspx
祝你好运!答案 1 :(得分:0)
Powershell的:
push-location;
import-module sqlps -disablenamechecking;
pop-location;
$s = new-object microsoft.sqlserver.management.smo.server '.';
$tbl = $s.databases['MyDB'].tables['MyTbl'];
foreach ($col in $tbl.Columns) {
if ($col -match '^Q([1-4])([0-9][0-9])\(\$\)$') {
$newName = "20$($matches[2]) Q$($matches[1])";
$col.Rename( $newName );
}
}