このクエリで何が問題になっていますか?単純なクエリを実行できません。 "右括弧がありません"というエラーが表示される
select author_num from (henry_author where (contains(author_first,'Albert') > 0))
右括弧が欠けているというエラーが表示されますか?データの不整合を考慮して
このクエリで何が問題になっていますか?単純なクエリを実行できません。 "右括弧がありません"というエラーが表示される
select author_num from (henry_author where (contains(author_first,'Albert') > 0))
右括弧が欠けているというエラーが表示されますか?データの不整合を考慮して
SELECT author_num FROM henry_author WHERE author_first LIKE '%Albert%';
または、おそらくより良い:
SELECT author_num FROM henry_author WHERE UPPER(author_first) LIKE '%ALBERT%';
%
がゼロ以上の文字に一致するワイルドカードです。したがって、%ALBERT%
は、実質的にあなたの機能がやっている 'ALBERT'の前後にあることを意味します。
UPPER
は、文字列を大文字に変換する機能にすぎず、潜在的なデータの不一致を処理することが容易になります。などの代わりに「アルバート」の「アルバート」に入力された誰か、
あなたはJDBCを使用しているので、あなたはそのようなあなたのクエリをパラメータ化することができますどのPreparedStatement
を使用するようにクエリを構築することがあります:
final String sqlSelectAuthorNum = "SELECT author_num FROM henry_author WHERE UPPER(author_first) LIKE ?";
final PreparedStatement psSelectAuthorNum = conn.prepareStatement(sqlSelectAuthorNum);
// now execute your query someplace in your code.
psSelectAuthorNum.setString(1, "%" + authorName + "%");
final ResultSet rsAuthorNum = psSelectAuthorNum.executeQuery();
if (rsAuthorNum.isBeforeFirst()) {
while (rsAuthorNum.next()) {
int authorNumber = rsAuthorNum.getInt(1);
// etc...
}
}
これはどういう意味ですか? http://imgur.com/a/tTNNx –
これは、あなたのクエリに無効な列名があるということを意味します。 'author_num'または' author_first'はテーブル 'henry_author'に存在しないか、間違っています。 – SnakeDoc
うわー。どうもありがとうございます! :D –
なぜテーブル名の前に括弧がありますか? – SnakeDoc
SQLの形式が正しくありません。括弧が多すぎます。できるだけ少なくしてください。私はあなたが持っているもので2つの括弧しか必要としないと言いたいですが、わずかに異なるクエリでは、これを0括弧で実現することができます。 – Compass
以前は 'ORA-20000:Oracle Textエラー:DRG-10599:列は索引付けされていません 'というエラーが発生していたためです。 :/ –