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

时间:2012-04-20 16:25:55

标签: 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"

等等。

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

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

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

4 个答案:

答案 0 :(得分:9)

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

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

如果这些路径字符串中的任何一个可以在中包含引号(yuck!),请考虑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,'"','')