2011-10-18 27 views
6

ASP.NET Webプロジェクトで小さなSQLサーバー検索を実行したいのですが、データベースが大きくないため、全文検索を使用しない方が良いと思います。 実行したいこのような単純な検索:SQLサーバーでLIKEワイルドカードを使用したクエリ

select * from mytable where columnA='"+myVariable+"' 

が、どのように私はLIKE句に代わり%something%の変数を使用することができます。

select * from mytable where columnA LIKE '%something%' 

私は次のように=使用することができますか? は正しいですか? LIKE '"+%myVariable%+"' ???

var query = "SELECT * FROM MyTable WHERE columnA LIKE '%" + myVariable + "%'"; 
+4

正解ですが、非常に悪いです。 SQL文を作成するために文字列を連結すると、SQLインジェクションを広く利用できます。 myVariableに値 ''; drop table mytable;があるとします。パラメータ化されたクエリまたはDBとの対話のためのLinqのバリエーションの1つを見てください – spender

+0

@spender:クエリの実行前にセキュリティの検証を実行する必要がありますので、これはクエリ自体の問題ではありません – sll

+3

@sll私はそれを購入しません。 SQL文に混在する文字列を「セキュリティで保護する」ことは困難です。それは単にそれをしない方が良いです。 – spender

答えて

7

用途:

where columnA LIKE '%' + myVariable + '%' 
+0

なぜあなたは異なる括弧で使われていますか? – sll

+0

私はあなたが一重引用符と二重引用符について話していると思います。私はあなたの質問から、このような例として使用しました: 'select * from mytable where columnA = '" + myVariable + "''だからこのクエリで 'LIKE'を使いたい場合は一重引用符(' '')の後ろに '%'を追加して同様に閉じます。 –

8
WHERE 
columnName LIKE '%' + myVarCharVariable +'%' 
0

さてあなたは、何かを行うことができますあなたは以下のようにすることができます:

SELECT * FROM whatever WHERE column LIKE '%'[email protected]+'%' 
4

私はこれを試してみました見つけた

私はVS2010を使用して、C#の

おかげで

5

この文字列で検索してください:

select * from tablename where colname like '%' + @varname + '%' 

はそれがお役に立てば幸いです。

1
DECLARE @myVariable varchar(MAX) 
SET @myVariable = 'WhatYouAreLookingFor' 
SELECT * FROM mytable 
    WHERE columnA LIKE '%' + @myVariable + '%' 
1

私のように他の人がこの投稿に遭遇した場合。 SQL Server 2012のバックエンドを持つSSMS 2012では、以下のように問題なくコードを使用することができました。

Declare @MyVariable 

Set @MyVariable = '%DesiredString%' 

Select * 

From Table_A 

Where Field_A like @MyVariable 

希望の文字列を変更するたびに、Set文で変更するだけです。

私はこの投稿が2012年より前に作られたことを知っています。それは新しい設定の誰かがこの投稿を参照する場合に私が言及している理由です。

関連する問題