[英]How to update a specific characters of column value for all tables in a database
I am trying to update a specific characters of column value for all tables in a database in Sql server 2008. I have _WORKGROUPNAME
column in my all tables and I want to change some characters in _WORKGROUPNAME
in all tables of database. 我正在尝试为Sql Server 2008中的数据库中的所有表更新列值的特定字符。我的所有表中都有
_WORKGROUPNAME
列,并且我想更改数据库的所有表中的_WORKGROUPNAME
中的某些字符。
sample data for _WORKGROUPNAME
column _WORKGROUPNAME
列的样本数据
COWAI1
COWAI2
PMWAI1
PMWAI2
need results 需要结果
COXXX1
COXXX2
PMXXX1
PMXXX2
I want to change WAI to XXX. 我想将WAI更改为XXX。 and I am tying below SQL.
而且我在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
but the problem is above statement is updating all column value to XXX
, but I want to change only WAI to XXX. 但是问题是上面的语句将所有列值都更新为
XXX
,但是我只想将WAI更改为XXX。 How to achieve this. 如何实现这一目标。
Edit : 编辑:
In all tables _WORKGROUPNAME name contains data and WAI will comes after 2 characters. 在所有表中,_WORKGROUPNAME名称包含数据,并且WAI将在2个字符之后。 and after WAI it is a number that can be any number.
在WAI之后,该数字可以是任意数字。
For Example 例如
ASWAI1500
WEWAI900000
ASWAI96
DDWAI11111
只需将AND _WORKGROUPNAME = N'WAI'
添加到您的WHERE
子句中。
Try this 尝试这个
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.