使用MS Access 2010。 我在一个表中有一个字段,其中包含用引号括起来的窗口路径名,比如这个
"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
有没有办法编写更新查询来执行此操作? 或者更好的方式来完成它?
答案 0 :(得分:9)
如果您将在Access会话中使用Access 2000或更高版本执行此操作,则可以使用更新查询中的Replace()
函数来删除引号。删除意味着用空字符串替换它们。
UPDATE YourTable
SET path_field = Replace(path_field, '"', '');
如果这些路径字符串中的任何一个可以在中包含引号Mid()
函数...要求它从第2个字符开始(跳过引号),并返回相当于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模式)执行此操作,请使用%wild card。
WHERE path_field Like '"%"'
...或使用ALike
和%外卡以任一模式。
WHERE path_field ALike '"%"'
答案 1 :(得分: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) = '"'
答案 2 :(得分:0)
要使其成为永久性更改,您可能会运行如下所示的更新查询:
UPDATE [Your Table]
SET [Your Table].[Your Field] = Replace([Your Table].[Your Field],"""","")
这将取消所有引号,即使它们不在开头或结尾。如果这不是你想要的那样,请回复。
答案 3 :(得分:0)
假设您的列名是MyColumn且表名是MyTable,您可以使用此sql更新数据以删除引号。
UPDATE MyTable
SET MyColumn = REPLACE(MyColumn,'"','')