あなたはこれを必要以上に難しくしていると同時に、何かが欠けていると思います。これはあなたがやろうとしていることですか?
SELECT country FROM data WHERE city LIKE 'jakarta%'
つまり、都市名が「ジャカルタ」で始まるすべての行から国の列を探していますか? %
もしそうなら、サインを忘れないでください。%
記号を含めない場合は、
SELECT country FROM data WHERE city LIKE 'jakarta'
と
SELECT country FROM data WHERE city = 'jakarta'
互いにまったく同じことを意味し、LIKE
演算子は無意味です。=
演算子を使用することもできます。
だから、あなたが望むMySQLクエリは
SELECT country FROM data WHERE city LIKE CONCAT(LEFT('jakartada',7),'%')
% 記号を追加します。この場合、副選択は必要ありません。
あなたが指摘したように、必要なJavaコードは次のとおりです。
String sql = "SELECT country FROM data " .
"WHERE city LIKE CONCAT(LEFT(?,7),'%')";
PreparedStatement ps = koneksi.prepareStatement(sql);
ps.setString(1, city );
ResultSet rs = ps.executeQuery();
... process the rs records ...
rs.close(); /* please don't forget to close your result sets */