2016-04-05 12 views
0

ColdFusionクエリの結果で作成されたドロップダウンがあります。 Test *で始まるassoc_last名を削除する方法を解明しようとしています。 WHERE assoc_last = "test*"を入れて、そのデータベースに "testby"などの "test"を含む値を削除することができますか?ワイルドカードを使用してクエリ結果をフィルタリングする

<cfquery name="GetActiveEmps" datasource="dsn"> 
     SELECT assoc_userid, assoc_last, assoc_first FROM tco_associates 
     WHERE assoc_status = 'ACTIVE' 
     and WHERE assoc_last LIKE 'Test%' 
     and len(assoc_last) > 0 
     ORDER BY assoc_last 
    </cfquery>  
+0

ワイルドカードのための適切な表記はassoc_last LIKE「テスト%が」 '' WHEREだろう - あなたは文字列を比較しているので、あなたが使用しますものですLIKE演算子、詳細については、このリンクを試してみてください。 http://www.w3schools.com/sql/sql_like.asp – TRose

+0

どのようなエラーがありましたか? 1つのWHERE句しか持つことはできませんが、必要な数のAND句を持つことができます。彼のコメントをあなたの質問にコピーして貼り付けたのであれば、おそらくWHEREの近くで誤った構文を言っているでしょう。 AND句である必要があります –

+0

フィールドassoc_lastが姓を参照する場合、クエリで実際の人が返される可能性があることを考慮する必要があります。また、 'とlen(assoc_last)> 0'は不必要であるだけでなく、クエリを遅くする可能性があります。 –

答えて

1

LIKE演算子を使用します。また、ユーザー入力がある場合はどこでもcfqueryparamを使用することを忘れないでください。

<cfquery name="GetActiveEmps" datasource="dsn"> 
    SELECT assoc_userid, assoc_last, assoc_first 
    FROM tco_associates 
    WHERE assoc_status = 'ACTIVE' 
    AND assoc_last LIKE 'Test%' 
    AND len(assoc_last) > 0 
    ORDER BY assoc_last 
</cfquery> 
+0

@David Brierton - Danが上で述べたように、 'Test%'と一致する値は明らかに長さが大きいので 'len(assoc_last)> 0'は不要です。ゼロよりも。また、上記のクエリは "Test"で始まる* only *値を返します。あなたの質問は、それらの値を削除する方法を尋ねました。将来の読者を混乱させないように、あなたの質問を修正したいかもしれません。 – Leigh

+0

ああ申し訳ありません。私はちょうど 'NOT LIKE'を追加しましたが、' len(assoc_last)> 0'を持っています。なぜなら、空であれば表示したくないからです。その行を書くより良い方法はありますか? –

関連する問題