5

使用 MS Access 2010。我在表中有一个字段,其中包含用引号括起来的 Windows 路径名,如下所示

"C:\My Documents\Photos\img1.jpg"
"C:\My Documents\Photos\products\gizmo.jpg"
"C:\My Documents\Photos\img5.jpg"

等等。

我需要去掉引号,所以列看起来像这样:

C:\My Documents\Photos\img1.jpg
C:\My Documents\Photos\products\gizmo.jpg
C:\My Documents\Photos\img5.jpg

有没有办法编写更新查询来做到这一点?或者一个更好的方法来完全做到这一点?

4

4 回答 4

9

如果您将在 Access 会话中使用 Access 2000 或更高版本执行此操作,则可以Replace()在更新查询中使用该函数来删除引号。删除意味着用空字符串替换它们。

UPDATE YourTable
SET path_field = Replace(path_field, '"', '');

如果这些路径字符串中的任何一个可能其中包含引号(糟糕!),请考虑该Mid()函数...要求它从第二个字符开始(跳过前导引号),并返回相当于的字符数Len(path_field) - 2

UPDATE YourTable
SET path_field = Mid(path_field, 2, Len(path_field) - 2);

无论哪种方式,您都可能希望包含一个 WHERE 子句来忽略没有path_field值的行。

WHERE Len(path_field) > 0

如果在添加新数据时必须再次执行此操作,请使用不同的 WHERE 子句以确保仅更新path_field值以引号开头和结尾的那些行。

WHERE path_field Like '"*"'

那是使用 * 通配符作为 Access 的默认 ANSI 89 模式。如果要从 ADO(ANSI 92 模式)执行此操作,请使用 % 通配符。

WHERE path_field Like '"%"'

...或ALike在任一模式下使用和 % 通配符。

WHERE path_field ALike '"%"'
于 2012-04-20T16:42:58.327 回答
2

其他人已经提到的解决方案REPLACE有效,但会删除所有引号,即使它们位于字符串的中间。

如果您只想删除开头或结尾的引号,但在字符串中间保留引号原样,您可以使用以下两个查询来完成:

如果是引号,则删除第一个字符:

update YourTable
set YourField = right(YourField, len(YourField) - 1)
where left(YourField, 1) = '"'

如果是引号,则删除最后一个字符:

update YourTable
set YourTable = left(YourField, len(YourField) - 1)
where right(YourField, 1) = '"'
于 2012-04-20T17:00:23.260 回答
0

要使其成为永久更改,您可能会运行如下所示的更新查询:

UPDATE [Your Table]
SET [Your Table].[Your Field] = Replace([Your Table].[Your Field],"""","")

这将消除所有引号,即使它们不在开头或结尾。如果那不是您想要的,请回帖。

于 2012-04-20T16:46:53.013 回答
0

假设您的列名是 MyColumn 并且表名是 MyTable,您可以使用此 sql 更新您的数据以摆脱引号。

UPDATE MyTable
SET MyColumn = REPLACE(MyColumn,'"','')
于 2012-04-20T16:47:10.633 回答