SELECT *
FROM Header
WHERE (userID LIKE [%'%])
9 に答える
それらを2倍にして逃げます。
SELECT *
FROM Header
WHERE userID LIKE '%''%'
SELECT *
FROM Header WHERE (userID LIKE '%''%')
SELECT * FROM Header WHERE userID LIKE '%' + CHAR(39) + '%'
SELECT * FROM TableName WHERE CHARINDEX('''',ColumnName) > 0
大量のnvarcharデータと数百万のレコードを含む列がある場合、パーセント記号を使用した一般的な「LIKE」の種類の検索では、SQL操作のパフォーマンスが低下します。
CHARINDEXに組み込まれているTSQL関数ははるかに高速であり、パフォーマンスが低下することはありません。
比較のためにSOポストを参照してください。
それは:
SELECT * FROM Header
WHERE (userID LIKE '%''%')
select * from Header where userID like '%''%'
お役に立てれば。
まず第一に、私の検索クエリ値はユーザーの入力からのものです。私はこれについてすべての答えを試しましたが、Googleが私に与えたすべての結果は、答えの90%が「%」「%」と答え、残りの10%がより複雑な答えを示しています。
どういうわけか、それらのすべてが私のために機能しませんでした。
MySQL(phpmyadmin)にはこの組み込みの検索関数があることを思い出したので、MySQLがアポストロフィを使用して検索を処理する方法を確認してみましたが、MySQLはアポストロフィをバックスラッシュでエスケープしLIKE '%\'%'
ているので、なぜアポストロフィを\'
すべてのユーザーのクエリで。
これは私が思いついたものです:
if(!empty($user_search)) {
$r_user_search = str_ireplace("'","\'","$user_search");
$find_it = "SELECT * FROM table WHERE column LIKE '%$r_user_search%'";
$results = $pdo->prepare($find_it);
$results->execute();
これで私の問題は解決します。 それでもセキュリティ上の問題がある場合は、訂正してください。
角かっこは識別子の前後に使用されるため、コードはテーブル%'%
内のフィールドを検索しHeader
ます。挿入された文字列を使用したい。文字列リテラルにアポストロフィを入れるには、ダブルアポストロフィを使用します。
SELECT *
FROM Header WHERE userID LIKE '%''%'
Javaコードを介してDB内のアポストロフィを含む名前を比較する
String sql="select lastname from employee where FirstName like '%"+firstName.trim().toLowerCase().replaceAll("'", "''")+"%'"
statement = conn.createStatement();
rs=statement.executeQuery(Sql);
結果を繰り返します。