1

列 Table2.FullNameField 基準が「Like Table1.ShortNameField」であるアクセスで選択クエリを作成しようとしています。したがって、Table2.FullNameField に Table1.ShortNameField が含まれている場合、レコードが選択されます。どちらのフィールドも文字列です。問題は、名前に * が含まれていることです。次に例を示します。

ShortNameField = "A*01"

FullNameField = "A*01:04"、"A*15:01"、"A*03:02" など

クエリ基準 = "Like Table1.ShortNameField" => Like A*01 (* はワイルド カードとして解釈されます)

上記の ShortNameField の期待/望ましい結果は、"A*01:04" の FullNameField を持つレコードを選択することですが、代わりに "A*15:01" を持つレコードを取得しています。

問題は、短縮名の * をワイルドカードではなく文字列の文字として扱う Like 関数を取得するにはどうすればよいかということです。

4

2 に答える 2

0

次の文字を置き換えることを検討してください。

SELECT  t.shortnamefield, t.fullnamefield
FROM Table t
WHERE Replace([fullnamefield],"*","|") 
     Like "*" & Replace([shortnamefield],"*","|") & "*"
于 2012-11-06T00:25:12.527 に答える
0

LIKE 句で特殊文字をエスケープするには、[*] や [?] などのように [] で文字を囲むのが一般的なルールです。

例:

select * from x where y like "[*]*"

y フィールドがアスタリスク (*) で始まるテーブル x のすべてのレコードが表示されます。

于 2012-11-06T02:02:27.407 に答える