如何将其作为选择语句?我希望它能够在整个表格中查找并找到其他内容并将其替换为其他内容

时间:2010-11-03 19:06:04

标签: sql ms-access

如何将此选项作为选择语句? 这适用于Microsoft访问。 我希望它可以在任何地方和整个表格中任何单元格的任何部分查找“煤104”并将其替换为“熔岩104”

3 个答案:

答案 0 :(得分:1)

脱离我的头顶。

Update myTable SET cell1 = Replace(cell1, 'Coal 104', 'Lava 104'), -- repeat for all cells in table
-- optional, but may run faster
WHERE cell1 LIKE '*Coal 104*' OR -- repeat for all cells in table

如果有必要说,只对VARCHAR字段执行此操作。

答案 1 :(得分:1)

您可以使用VBA代码执行此操作。您需要遍历数据库中的所有表,并为每个表迭代所有字段。

对于每个字段,创建一个sql语句以更新包含搜索值的行,并将其替换为目标值。然后执行动态sql语句。

答案 2 :(得分:0)

由于您还不完全清楚是否要更新表中的值,或者只是显示我详细说明的新值(这可能对更好地理解该过程有用)。

这是包含cell1

中输入值的'mytable'表
**cell1**
abc Coal 104 efg
abcdefg
othervalue
Coal 104 xyz
more

如果您使用MS Access中的图形查询编辑器显示所有值(尚未替换)Access将创建以下SQL stamtement(在编辑器窗口中右键单击选择'SQL-View'):

SELECT myTable.cell1
FROM myTable;

(没什么特别的) 现在回到图形编辑器窗口,你可以插入第二个值,例如cell1_new显示替换的值(这在任何情况下都可能对'debugging'有用)并且你得到(再次在SQL视图中)

SELECT myTable.cell1, Replace([cell1],"Coal 104","Lava 104") AS cell1_new
FROM myTable;

运行我看到的查询:

**cell1**          **cell1_new**
abc Coal 104 efg     abc Lava 104 efg
abcdefg              abcdefg
othervalue           othervalue
Coal 104 xyz         Lava 104 xyz
more                 more

(只是要清楚,这不会更新原始表中的值,它只是一个视图)。

使用图形查询编辑器甚至可以构建UPDATE查询。 首先将查询类型更改为“更新查询”(我不确定这是在英语MS Access中调用的内容)。 其次将用于显示'cell1_new'值的replace-'formula'插入到cell1下面的行更新为myTable(不带'cell1_new:')。删除此列cell1_new的公式(因为我们现在只更新列cell1中的值) 第三,因为建议您可以将更新的值限制为仅包含“Coal 104”的行,因此在条件行中输入“ Coal 104

在grafical编辑器中,它应该或多或少看起来像这样:

Field  cell1
Table  myTable Update
Replace([cell1],"Coal 104","Lava 104")
crieteria Like "*Coal 104*"

再次检查SQL-Statement(我发现比grafical视图更容易理解)现在读取如下:

UPDATE myTable SET myTable.cell1 = Replace([cell1],"Coal 104","Lava 104")
WHERE (((myTable.cell1) Like "*Coal 104*"));

(我在WHERE-Statement Access中留下了那些讨厌的问题,所以看起来一样。)

要完成,请运行此查询(例如按感叹号)。通常(除了您在设置中更改了此行为)Access会询问您是否确实要更新 - 在此示例中 - 两个值。

我希望这有助于获得一个想法,如何使用grafical编辑器来试验不同的查询。我认为在这方面Access不是一个糟糕的学习工具。

HTH 安德烈亚斯