1

我正在尝试使用 REPLACE 函数来搜索字符串并删除一个字符。这是代码..

SELECT Test.*, Replace([Data],ChrW(10),"",(Len([Data])-2),1) FROM Test;

虽然这只是一个 select stmt,但结果集会返回 [Data] 列中数据的最后三个字符。而不是在该位置开始搜索。

这里的 UPDATE 语句也一样...

 UPDATE Test SET Test.Data = Replace([Data],ChrW(10),"",(LEN([Data])-2)) 
 WHERE (((Test.[Data]) Like ("*" & ChrW(10))));

我仍然希望搜索是 LEN([Data])-2 的结果。而是只返回最后一个字符。替换成功。

对我的监督有任何帮助将不胜感激。

4

1 回答 1

0

奇怪的。我已经确认你得到了什么。在查询中,向 Replace() 函数添加起始位置也可以作为 Right() 函数。我找不到任何文档。在 VBA 中,它的行为与预期的一样,因为它返回整个字符串,没有替换的字符。

您有 3 个解决方法的选项。

  1. 您可以替换所有 Chrw(10),但我认为您可能不想这样做,因为您指定了起始位置。
  2. 您可以使用 IIF() 语句测试最后一个字符是否为 Chr(10),如果是,则执行 Left() 函数以排除最后一个字符。有点乱
  3. 如果您在 Access 中工作,您可以在 VBA 中创建自己的函数并调用它。你可以调用你的函数 Repl,所以它看起来像这样:UPDATE Test SET Test.Data = Repl([Data])
于 2013-04-22T20:16:34.737 回答