您好我正在研究SQL数据库
使用Microsoft SQL Server 2008 R2 和Microsoft SQL Server管理工作室
我有一个名为 FixedNamesDb 的数据库 在数据库上有一个名为全部
的表它与此类似(这是一个例子):
OldNames NewNames
------------+---------------+
tom G Thommas Grady
Kate F Kateline Farwell
John S Jhon Smith
在另一个名为 DescriptionDb 的数据库中有很多表表1 ,表2 ,表3 ....
FixedNamesDb 中的Foreach Oldname我需要搜索 DescriptionDb 中的所有表格,如果oldname出现在任何字段中,我需要将其替换为newName
我搜索 DescriptionDb 中的所有表格,查找包含“John S”的字段,并将其替换为“Jhon Smith”
有关如何自动执行此操作的任何帮助?使用脚本,查询或其他内容。
更多信息:
每个名称只在 DescriptionDb
显示所有名称(没有名称不存在)
所有名称都位于表格的第二行(ID = 2的行)
非常感谢您的帮助。
答案 0 :(得分:2)
对需要更新的每个表使用此脚本。
UPDATE
DescriptionDb.Table1
SET
Name = FN.NewName
SELECT
FixedNamesDB.[All] AS FN
WHERE
Name = FN.Oldname
以下脚本可以找到所有表和列。使用编程或脚本语言循环遍历上述脚本中的Table1
和Name
的所有表和列,并使用下面脚本的所有迭代。
SELECT
TABLES.TABLE_SCHEMA + '.' + TABLES.TABLE_NAME 'TABLE_NAME',
COLUMNS.COLUMN_NAME,
COLUMNS.DATA_TYPE,
COLUMNS.CHARACTER_MAXIMUM_LENGTH
FROM
INFORMATION_SCHEMA.COLUMNS,
INFORMATION_SCHEMA.TABLES
WHERE
COLUMNS.TABLE_NAME = TABLES.TABLE_NAME
AND TABLES.TABLE_SCHEMA = 'DescriptionDb'
ORDER BY
TABLES.TABLE_SCHEMA,
TABLES.TABLE_NAME,
COLUMNS.COLUMN_NAME