2012-03-19 11 views

答えて

2

あなたは別の単一引用符と単一引用符をエスケープする必要があります。Informixので

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

、あなたは一般的に2つの選択肢があります。

標準SQL技術(describedMichal 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の例(JDBCドライバを使用することができますPythonの):

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やその他の技術のユーザーになることができます。

関連する問題