SELECT *
FROM Header
WHERE (userID LIKE [%'%])
答案 0 :(得分:55)
加倍他们逃脱;
SELECT *
FROM Header
WHERE userID LIKE '%''%'
答案 1 :(得分:10)
SELECT *
FROM Header WHERE (userID LIKE '%''%')
答案 2 :(得分:7)
SELECT * FROM Header WHERE userID LIKE '%' + CHAR(39) + '%'
答案 3 :(得分:2)
SELECT * FROM TableName WHERE CHARINDEX('''',ColumnName) > 0
当具有大量nvarchar数据和数百万条记录的列时,使用百分号的常规“ LIKE”搜索将降低SQL操作的性能。
虽然CHARINDEX内置的TSQL函数要快得多,并且不会造成任何性能损失。
参考SO帖子以提供比较视图。
答案 4 :(得分:1)
这是:
SELECT * FROM Header
WHERE (userID LIKE '%''%')
答案 5 :(得分:1)
首先,我的搜索查询值来自用户的输入。 我已经尝试过所有关于此问题的答案,以及Google给我的所有结果,其中90%的答案表示'%''%',而其他10%的答案较为复杂。 / p>
由于某些原因,这些都不对我有用。
我还记得在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();
这解决了我的问题。 如果仍然存在安全问题,请更正我。
答案 6 :(得分:0)
括号围绕标识符使用,因此您的代码将在%'%
表中查找字段Header
。你想使用一个insteaed字符串。要将撇号放在字符串文字中,请使用双撇号。
SELECT *
FROM Header WHERE userID LIKE '%''%'
答案 7 :(得分:0)
select * from Header where userID like '%''%'
希望这有帮助。
答案 8 :(得分:0)
通过Java代码比较DB中包含撇号的名称
String sql="select lastname from employee where FirstName like '%"+firstName.trim().toLowerCase().replaceAll("'", "''")+"%'"
statement = conn.createStatement();
rs=statement.executeQuery(Sql);
迭代结果。