从MS Access数据库表中的字段中删除字符

man*_*sha 5 ms-access sql-update

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

"C:\My Documents\Photos\img1.jpg"
"C:\My Documents\Photos\products\gizmo.jpg"
"C:\My Documents\Photos\img5.jpg"
Run Code Online (Sandbox Code Playgroud)

等等.

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

C:\My Documents\Photos\img1.jpg
C:\My Documents\Photos\products\gizmo.jpg
C:\My Documents\Photos\img5.jpg
Run Code Online (Sandbox Code Playgroud)

有没有办法编写更新查询来执行此操作?或者更好的方式完成它?

Han*_*sUp 9

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

UPDATE YourTable
SET path_field = Replace(path_field, '"', '');
Run Code Online (Sandbox Code Playgroud)

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

UPDATE YourTable
SET path_field = Mid(path_field, 2, Len(path_field) - 2);
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,您可能希望包含WHERE子句以忽略没有path_field值的行.

WHERE Len(path_field) > 0
Run Code Online (Sandbox Code Playgroud)

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

WHERE path_field Like '"*"'
Run Code Online (Sandbox Code Playgroud)

那就是使用*外卡进行Access'默认的ANSI 89模式.如果您将从ADO(ANSI 92模式)执行此操作,请使用%通配符.

WHERE path_field Like '"%"'
Run Code Online (Sandbox Code Playgroud)

...或者使用ALike%wild卡和任一模式.

WHERE path_field ALike '"%"'
Run Code Online (Sandbox Code Playgroud)