7

名前に特定の文字列が含まれ、両側にワイルドカードが含まれるすべてのクライアントを返したいクエリがあります。したがって、入力は「Smith」である可能性があり、「The John Smith Company」や「Smith and Bros」などのすべてのものを返したいとします。[クライアント] にプロンプ​​トが表示されるようにしたいので、次のように SQL を設定します。

PARAMETERS Client Text ( 255 );
SELECT *
WHERE (((tbl_IncomingChecks.Client) Like'%' + [Client] + '%') 
ORDER BY tbl_IncomingChecks.Client;

クエリは結果を返しません。助けてください

4

4 に答える 4

6

MS Access は、% ではなく * をワイルドカードとして使用するため、クエリはリテラル '%' 文字と一致しようとします。ADO を使用していない場合は、代わりに * を使用してください。

http://office.microsoft.com/en-us/access-help/like-operator-HP001032253.aspx

于 2012-12-31T19:37:44.007 に答える
1

あなたの問題は「+」演算子にあるように感じます

WHERE ((tbl_IncomingChecks.Client) Like Concat('%',[Client],'%')) 

これはDB2で私を手に入れました

于 2012-12-31T19:19:47.707 に答える
0

REGEXPMYSQL で関数を使用するのはどうですか?

SELECT *
WHERE tbl_IncomingChecks.Client REGEXP concat('%', @Client, '%') 
ORDER BY tbl_IncomingChecks.Client;

または、単純に @client を として使用して、REGEXPこのクライアント名を含むすべてのクライアントを検索します。

SELECT *
WHERE tbl_IncomingChecks.Client REGEXP @Client
ORDER BY tbl_IncomingChecks.Client;

MS ACCESSとしてのRDBMSに関するOPの更新に従って

より洗練されたパターンがある場合はRegexp、MS Access UDF 内でオブジェクトを使用できます。ただし、現在のシナリオでは、LIKE Concat('*',@client,'*')

'-- you may even send the pattern as a parameter 
'-- you may also send all the clients into the UDF itself for matching
'-- returning a set of matched names string

Function regexpFunc(ByRef strInput As String, ByRef clientName as String) As Boolean
   Dim myRegex As New RegExp
   Dim matchSet As MatchCollection  

   With myRegex  
     .MultiLine = False  
     .Global = True  
     .IgnoreCase = False  
   End With  

   myRegex.Pattern = clientName

   If myRegex.Test(strInput) Then  
     'matching values can be collected here
     '-- Set matchSet = myRegex.Execute(strInput)
     RegexFunc = True
   Else
     RegexFunc = False           
   End If  
End Function

クエリで上記の関数を使用する方法は次のとおりです。

SELECT *
FROM MYTABLE
WHERE RegexpFunc(tbl_IncomingChecks.Client, "Smith") 
ORDER BY tbl_IncomingChecks.Client;
于 2012-12-31T19:14:49.693 に答える
0

ステートメントで from を使用していません

PARAMETERS Client Text ( 255 );
SELECT * from table
于 2012-12-31T19:22:16.677 に答える