2012-03-19 95 views

回答

2

您必须逃脱单引号与另一单引号:

select * from name_table where lastname = 'O''Neil'; 
0

使用Informix,你通常有两种选择。

标准SQL技术(described作者:Michal Niklas)始终有效,并且是简单的推荐解决方案。在字符串中的单引号的所有外观都弯了腰:

SELECT * FROM Name_Table WHERE LastName = 'O'Neill'; 

一种替代技术,它的工作原理,除非你已经设置DELIMIDENT在您的环境是使用字符串括在双引号:

SELECT * FROM Name_Table WHERE LastName = "O'Neill"; 

如果分隔标识符由DELIMIDENT启用,则这具有不同的含义; DBMS将在表中寻找一个名为“O'Neill”的列(因为它是一个标识符,而不是一个字符串)。

如果你有一个字符串两个引号,那么你必须要小心:

SELECT * FROM QuoteTable WHERE Quote = 'He said, "Don''t"!'; 
SELECT * FROM QuoteTable WHERE Quote = "He said, ""Don't""!'; 
0

我对技术变革的命题第二个答案。

我不知道你使用了什么技术,但也许你可以使用PreparedStatements。例如,在Jython中(Python中,可以使用JDBC驱动程序):

db = DriverManager.getConnection(jdbc_url, usr, passwd) 
pstm = db.prepareStatement("select * from name_table where lastname=?") 
pstm.setString(1, "O'Neil") 
rs = pstm.executeQuery() 
while (rs.next()): 
    print('[%s]' % (rs.getString(1))) 

正如你所看到的PreparedStatement使用?作为占位符,然后必须使用setString()方法填充它。这是非常有用的,如果你必须做很多类似的选择,插入等。看看这个Java6的文档:http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

类似的技术可以是ODBC或其他技术的用户。