2012-03-19 100 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或其他技術的用戶。