JavaScript レコードを文字列で抽出する方法について。

【講座名】
JavaScript初心者入門講座 に関する質問

【質問】
SQL文を組み立てる部分について質問があります。
whereで特定の行を抽出する場合に、抽出条件を変数に代入したいのですが、上手くいきません。

以下のように数値を指定した場合は上手くいくのですが、
var one = "1";
var mySql = "select * from T01Prefecture where PREF_CD = " + one;
var recordSet = database.Execute(mySql);

文字列だと上手くいきません。
var fukuoka = "福岡県";
var mySql = "select * from T01Prefecture where PREF_NAME = " + fukuoka;
var recordSet = database.Execute(mySql);

SQLの組み立て時は変数の扱いが変わるのでしょうか?

また、SQL組み立て時に入力した文字列(コントロールまたは変数)+ワイルドカードでDBからデータを抽出したいのですが、可能でしょうか?

ご教授お願いします。

使用しているmdbは、ダウンロードさせて頂いた、SampleDB010です。

【回答】
文字列は「'」シングルクォートで囲む必要があります。

したがって、正しくは以下のようになります。
var mySql = "select * from T01Prefecture where PREF_NAME = '" + fukuoka + "'";

これがプログラムで組み立てられると、
select * from T01Prefecture where PREF_NAME = '福岡県'
というSQL文になります。

コツは組み立てたSQL文を、画面に表示してみることです。すると間違いに気付きやすくなります。アラートで表示してもかまいません。

また、ワイルドカードを使う場合は、次のようになります。
var mySql = "select * from T01Prefecture where PREF_NAME Like '*" + fukuoka + "*'";

プログラムで組み立てられると、
select * from T01Prefecture where PREF_NAME Like '*福*'
のようになります。

SQLについては、 Access SQL初心者入門講座 で詳しく説明しています。

【補足】
Accessでは、バージョンによって使えるワイルドカードが異なるようです。

Access2000では「*」を使いますが、Access2002以上では、ANSI規格の設定によって「%」が使えます。

スポンサードリンク


スポンサードリンク






プログラミング入門 Q&A TOPへ