![](/img/trans.png)
[英]I have the same column in multiple tables, and want to update that column in all tables to a specific value. How can I do this?
[英]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.