SELECT *
FROM Header
WHERE (userID LIKE [%'%])
SELECT *
FROM Header
WHERE (userID LIKE [%'%])
双倍它们以逃脱;
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操作的性能。
而内置的TSQL函数CHARINDEX更快,不会有任何性能损失。
参考SO文章以进行比较。
那是:
SELECT * FROM Header
WHERE (userID LIKE '%''%')
select * from Header where userID like '%''%'
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代码比较包含撇号的数据库名称
String sql="select lastname from employee where FirstName like '%"+firstName.trim().toLowerCase().replaceAll("'", "''")+"%'"
statement = conn.createStatement();
rs=statement.executeQuery(Sql);
迭代结果。