Oracle SQL UPDATE语句含单引号导致脚本报错求助
解决SQL UPDATE语句含单引号报错的问题
方法1:转义单引号
在SQL语法里,字符串边界由单引号标识,要在字符串内容里包含单引号,需用两个连续单引号替代单个单引号。
举个实际例子:
如果要更新的字段值是O'Neil,对应的UPDATE语句应写成:
UPDATE users SET name = 'O''Neil' WHERE id = 1;
数据库会自动将连续的两个单引号解析为字符串内的一个单引号,不会触发语法错误。
方法2:使用参数化查询(推荐)
这是更安全、更规范的解决方案,既能避免单引号转义的麻烦,还能防范SQL注入风险。不同编程语言的实现示例如下:
Python(MySQLdb)
import MySQLdb db = MySQLdb.connect(host="localhost", user="your_user", passwd="your_pass", db="your_db") cursor = db.cursor() target_value = "O'Neil" cursor.execute("UPDATE users SET name = %s WHERE id = %s", (target_value, 1)) db.commit()
Java(JDBC)
String updateSql = "UPDATE users SET name = ? WHERE id = ?"; PreparedStatement pstmt = connection.prepareStatement(updateSql); pstmt.setString(1, "O'Neil"); pstmt.setInt(2, 1); pstmt.executeUpdate();
PHP(PDO)
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'your_user', 'your_pass'); $target_value = "O'Neil"; $stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?"); $stmt->execute([$target_value, 1]);
参数化查询会自动处理字符串中的特殊字符,无需手动转义,是生产环境的首选方案。
内容的提问来源于stack exchange,提问作者pedroisp
相关产品推荐
相关产品推荐

