繁体   English   中英

如何为数据库中的所有表更新列值的特定字符

[英]How to update a specific characters of column value for all tables in a database

我正在尝试为Sql Server 2008中的数据库中的所有表更新列值的特定字符。我的所有表中都有_WORKGROUPNAME列,并且我想更改数据库的所有表中的_WORKGROUPNAME中的某些字符。

_WORKGROUPNAME列的样本数据

COWAI1
COWAI2
PMWAI1
PMWAI2

需要结果

COXXX1
COXXX2
PMXXX1
PMXXX2

我想将WAI更改为XXX。 而且我在SQL下绑定。

SELECT 'UPDATE ' + T.TABLE_SCHEMA + '.' + T.TABLE_NAME + ' 
SET _WORKGROUPNAME = N''XXX'  
FROM INFORMATION_SCHEMA.TABLES T 
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON 
T.TABLE_NAME = C.TABLE_NAME AND c.COLUMN_NAME ='_WORKGROUPNAME' 
WHERE T.TABLE_TYPE = 'BASE TABLE' ORDER BY T.TABLE_SCHEMA, T.TABLE_NAME

但是问题是上面的语句将所有列值都更新为XXX ,但是我只想将WAI更改为XXX。 如何实现这一目标。

编辑:

在所有表中,_WORKGROUPNAME名称包含数据,并且WAI将在2个字符之后。 在WAI之后,该数字可以是任意数字。

例如

ASWAI1500
WEWAI900000
ASWAI96
DDWAI11111

只需将AND _WORKGROUPNAME = N'WAI'添加到您的WHERE子句中。

尝试这个

SELECT 'UPDATE ' + T.TABLE_SCHEMA + '.' + T.TABLE_NAME + ' 
SET _WORKGROUPNAME = replace(_WORKGROUPNAME,''WAI'',''XXX'')'  
FROM INFORMATION_SCHEMA.TABLES T 
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON 
T.TABLE_NAME = C.TABLE_NAME AND c.COLUMN_NAME ='_WORKGROUPNAME' 
WHERE T.TABLE_TYPE = 'BASE TABLE' ORDER BY T.TABLE_SCHEMA, T.TABLE_NAME

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM