SELECT author_num FROM henry_author WHERE author_first LIKE '%Albert%';
oder, wahrscheinlich besser für Dateninkonsistenzen Konto:
SELECT author_num FROM henry_author WHERE UPPER(author_first) LIKE '%ALBERT%';
Die %
ist ein Platzhalter für: null oder mehr Zeichen. Also %ALBERT%
bedeutet alles kann vor oder nach 'ALBERT', was effektiv ist, was Ihre Funktion macht.
UPPER
ist nur eine Funktion, die die Zeichenfolge in Großbuchstaben umwandelt, was es einfacher macht, mit möglichen Dateninkonsistenzen umzugehen, d. jemand in ‚albert‘ getippt statt ‚Albert‘ usw.
Da Sie JDBC verwenden, möchten Sie vielleicht Ihre Anfrage strukturieren PreparedStatement
zu verwenden, die Sie Ihre Abfrage ermöglicht zu parametrieren wie so:
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...
}
}
Warum haben Sie vor Ihrem Tabellennamen eine runde Klammer? – SnakeDoc
Ihr SQL ist fehlerhaft. Zu viele Klammern. Du solltest so wenig wie möglich haben. Ich würde sagen, dass Sie höchstens 2 Klammern mit dem, was Sie haben, benötigen, und mit einer etwas anderen Abfrage können Sie dies mit 0 Klammern erreichen. – Compass
Weil, bevor es mir einen 'ORA-20000 gab: Oracle Text Fehler: DRG-10599: Spalte ist nicht indiziert' Fehler. :/ –