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 2000以降を使用してAccessセッション内からこれを行う場合は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のデフォルトのANSI89モードに*ワイルドカードを使用していました。ADO(ANSI 92モード)からこれを行う場合は、%ワイルドカードを使用します。

WHERE path_field Like '"%"'

...またはALike、いずれかのモードで%ワイルドカードを使用します。

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

他の人がすでに言及したソリューションはREPLACE機能しますが、文字列の途中にある場合でも、すべての引用符を削除します。

先頭または末尾の引用符のみを削除し、文字列の途中の引用符をそのまま残したい場合は、次の 2 つのクエリを使用して実行できます。

引用符の場合は最初の文字を削除します。

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 に答える