使用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

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

最佳答案

如果要使用Access 2000或更高版本在Access session 中执行此操作,则可以在更新查询中使用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子句以确保仅UPDATE那些path_field值以引号开头和结尾的行。
WHERE path_field Like '"*"'

那是使用*通配符访问Access的默认ANSI 89模式。如果您将从ADO(ANSI 92模式)执行此操作,请使用%通配符。
WHERE path_field Like '"%"'

...或在两种模式下都使用ALike和%通配符。
WHERE path_field ALike '"%"'

关于ms-access - 从MS Access数据库表中的字段中删除字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10249929/

10-16 15:11