SELECT *
FROM Header
WHERE (userID LIKE [%'%])
问问题
117434 次
9 回答
72
将它们加倍以逃脱;
SELECT *
FROM Header
WHERE userID LIKE '%''%'
于 2011-06-28T15:45:14.883 回答
13
SELECT *
FROM Header WHERE (userID LIKE '%''%')
于 2011-06-28T15:42:56.473 回答
7
SELECT * FROM Header WHERE userID LIKE '%' + CHAR(39) + '%'
于 2011-06-28T15:48:03.950 回答
2
SELECT * FROM TableName WHERE CHARINDEX('''',ColumnName) > 0
当您有包含大量 nvarchar 数据和数百万条记录的列时,使用百分比符号的一般“LIKE”类型的搜索会降低 SQL 操作的性能。
而 CHARINDEX 内置的 TSQL 函数更快,不会有任何性能损失。
参考SO帖子以获得比较视图。
于 2020-05-12T16:11:16.780 回答
1
那是:
SELECT * FROM Header
WHERE (userID LIKE '%''%')
于 2011-06-28T15:46:44.883 回答
1
select * from Header where userID like '%''%'
希望这可以帮助。
于 2011-06-28T15:47:00.670 回答
1
首先,我的搜索查询值来自用户的输入。我已经尝试了这个问题的所有答案以及谷歌给我的所有结果,90% 的答案说 put '%''%'而另外 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();
这解决了我的问题。 如果这仍然存在安全问题,请纠正我。
于 2020-02-28T17:01:19.790 回答
0
括号用于标识符周围,因此您的代码将%'%
在Header
表中查找该字段。您想使用字符串代替。要将撇号放在字符串文字中,请使用双撇号。
SELECT *
FROM Header WHERE userID LIKE '%''%'
于 2011-06-28T15:46:17.653 回答
0
通过 Java 代码比较 DB 中包含撇号的名称
String sql="select lastname from employee where FirstName like '%"+firstName.trim().toLowerCase().replaceAll("'", "''")+"%'"
statement = conn.createStatement();
rs=statement.executeQuery(Sql);
迭代结果。
于 2015-11-18T12:33:19.147 回答