• ベストアンサー

VBAのSQL文内での"(ダブルコーテーション)の扱いについて。

Access97のVBAでSQL文を書きたいと思います。 テーブルに[姓]、[名]という2フィールドがあり、これをSQL内で[姓 名]と一つにしたいと思います。姓と名と間にスペースを入れます。 QBE グリッドに 姓名: [名簿]![姓] & " " & [名簿]![名] と書くと SELECT [姓] & " " & [名] AS [姓 名] FROM 名簿と SQL文が作成されたため そのまま VBAに貼り付けてみたのですが、 " (ダブルコーテーション)扱いがまずいかエラーになります。 SQL文での中での " (ダブルコーテーション)の扱いはどのようにすればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keiko1973
  • ベストアンサー率33% (5/15)
回答No.1

そういう時はCHAR()を使用してください。 "はCHAR(34)なのでSQLは下記のようになります。 SELECT [姓] & CHAR(34) & ' ' & CHAR(34) & [名] AS [姓 名] FROM 名簿 " "は空白は全角スペースの意味ではないですよね?その場合は'(シングルコーテーション)を使ってください。

abcxyz3000
質問者

お礼

#2の回答者さんを含め、お礼を申し上げます。おかげさまで、動きました。 また、よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

"SELECT [姓] & ' ' & [名] AS [姓 名] FROM 名簿" もしくは "SELECT [姓] & "" "" & [名] AS [姓 名] FROM 名簿"

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ダブルコーテーションやシングルコーテーション

    私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

    • ベストアンサー
    • MySQL
  • シングルクォーテーションとダブルクォーテーション

    いつも楽しく拝見させて頂いています。 初心者ですが宜しくお願いします。 シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。 select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。 以上宜しくお願いします。

    • ベストアンサー
    • MySQL
  • PHPでjavascriptを書き出すときのクォーテーションの使い方

    PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、 ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか? 例 $a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>"; *test()はjavascriptの関数とします。 このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。

    • ベストアンサー
    • PHP
  • SQLインジェクション対策(クオーテーション関連

    PHP Version 5.4.7の環境にて。 SQLite3::escapeStringを使って、 SQLインジェクション対策をしようと考えています。 HTMLの<form>からPOSTで値を受け取り、 その値をSQL文に入れ込み、 そのクエリ(※ちなみに、INSERTのみです。)をSQLite3のDBに対して行う、 なんてことをする際の、 SQLインジェクション対策として、お考え下さい。 POSTで受け取る値に入っていたら危険なものとして、 「シングルクオーテーション」が、まず、挙げられるかと思います。 「'」 ←これです。 さて、「"」 ←こちらはダブルクオーテーションですが、 こちらのダブルの方はエスケープする必要は無いのでしょうか? (例)※wikipediaより SELECT * FROM users WHERE name = '(入力値)'; SELECT * FROM users WHERE name = 't' OR 't' = 't'; → このSQL文では条件が常に真となるため、 nameカラムの値にかかわらず、全レコードが選択される。 → ということで、入力値に、 エスケープされていない「シングルクオーテーション」をそのまま使うのはNG。 ここまではOKです。 では、次に、ダブルクオーテーション版で、 SELECT * FROM users WHERE name = "(入力値)"; SELECT * FROM users WHERE name = "t" OR "t" = "t"; こちらはどうなのでしょうか? (シングルをダブルに変えただけですが。) ---------- ちなみに、 SQLite3::escapeString にて、 (1) $var = "Let's"; //←シングルクオーテーション $db = new SQLite3(':memory:'); $escaped_var = $db->escapeString($var); echo $escaped_var; //Let''s と表示される (「 ' 」が1つ追加される。) (2) $var = 'Let"s'; //←ダブルクオーテーション $db = new SQLite3(':memory:'); $escaped_var = $db->escapeString($var); echo $escaped_var; //Let"s と表示される (何も追加されず。) というように、 シングルクオーテーションはエスケープされるが、 ダブルクオーテーションの方ではエスケープされませんでした。 これは、つまり、 ダブルクオーテーションの方は危険視されていない、 ということだと思いますが、 でも、本当にダブルクオーテーションをエスケープせずに、 そのまま、SQL文につっこんでも大丈夫なのでしょうか?

    • ベストアンサー
    • PHP
  • SQL文のダブルクォーテーションを取りたい。

    SQL2008を使用しております。 2つのDBを統合したいのですがユニークIDがかぶっているデータが あるのでIDを変更したいのですが フリーソフトでINSERT文をTab区切りで出力してIDを変更してINSERT文を 作成するといらない箇所に「"」ダブルクォーテーションが入ってしまします。 もちろんその状態ではクエリ実行できないので困っています。 順序はINSERT文をTab区切りで出力→出力されたTab区切りのcsvのIDを変更→テキストで保存(csvでも保存)→拡張子をsqlに変更するといらない箇所に「"」ダブルクォーテーションが入ってしまします。 変更保存の問題でしょうか? どうしたら「"」ダブルクォーテーションが入らない方法はありませんか? 以上、わかるかた教えてください。 よろしくお願いします。

  • SQL insert文のシングル・ダブルクオーテーション

    ASPで(DBと連結)登録画面を作っています。 登録フォームから「登録」ボタンを押したあとのDBへデータを入力(更新)する時のSQL文で手間取っています。 「パラメータが少なすぎます。1 を指定してください。 」とエラーが出ます。フィールド名は間違っていません。 cateid付近のシングル・ダブルクオーテーションの書き方がおかしいのかなとも思いますが長時間見てますがどこがおかしいか分かりません。 -------------- StrSQL = "insert into contents (" StrSQL = StrSQL & " title, " StrSQL = StrSQL & " naiyou, " StrSQL = StrSQL & " hiduke, " StrSQL = StrSQL & " cateid " StrSQL = StrSQL & ") values (" StrSQL = StrSQL & "'" & title & "'," StrSQL = StrSQL & "'" & naiyou & "'," StrSQL = StrSQL & "#" & hiduke & "#," StrSQL = StrSQL & " cateid " StrSQL = StrSQL & ")" -------------- cateidは入力フォームのセレクトボックスからの値で数値型です。 ご助言頂ければ助かります。 あとなぜinsert文、update、delete文のときはStrSQL = "・・・"と「""」で囲むのでしょうか。 長文すみません。宜しくお願いします。

  • VBでSQLの記述

    ACCESS VBAで今あるシステムを作成しているのですが、 SQL文を使う際に rs.Open "SELECT * FROM abc WHERE def='" & ghi & "'" などと記述しますが、このシングルコーテーションや、セミコロンはどのような意味があってつけてるのですか? ごちゃごちゃしてて理解するのに苦労します。 どなたかお願いします。

  • '(シングルクォーテーション)の検索

    '(シングルクォーテーション)の検索 SQL Server 2005 Express Edition を使っています。 '(シングルクォーテーション)を含む文字列を検索したいのですが できずに困っています。 どのようなクエリを組むべきでしょうか? 教えてください。 よろしくお願いします。 現在は select * from テーブル名 where 列名 like '%\'%' としていますがエラーになります。

  • SQLについてアドバイスください。

    USER_TAB_COLUMNSから入力したテーブル名で構造を抽出し SQL文を作成出来るものを作ろうとしています。 80%までうまく行くのですが、SELECT文でフィールドをカンマ付けで置いていく 所で最後のフィールドに来た時カンマが付加されてしまいます。 これを最後のフィールドに来た時カンマが付加されないでスペースで置くように したいのですが。。 set pagesize 0 set linesize 1000 set trimspool on set feedback off set verify off ACCEPT TABLE CHAR PROMPT 'TABLE NAME:' set termout off spool C:\TEST_csv.sql SELECT 'SELECT ' FROM DUAL; SELECT COLUMN_NAME || ',' FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER( '&TABLE' ) ORDER BY COLUMN_ID; SELECT 'FROM DUAL' FROM DUAL; SPOOL OFF

  • 円マークのフィールドに対してSELECT文が実行できない

    いつも参考にさせていただいております。 DB2(AS400)に対してJDBC経由で、円マーク(\)をんだフィールドに対してSELECT文を実行しようとすると、エラーになってしまいます。 フィールドの前にもう一つ円マークを付加して、フィールド名をダブルコーテーションでくくってみたのですが、テーブルには該当するフィールドがないというエラーになってしまいます。 以下のようなJavaのコードになります。 String sqlStr = "SELECT " + "\"" + "\\COL1" + "\"" + " FROM TABLE1"; 上記からは以下のSQLが作成されます。 SELECT "\COL1" FROM TABLE1 このSQL文を、DB2のツールで実行すると問題なく処理されて、値が返ってきます。 Java(JDBC経由)の場合は、どのように記述したら宜しいのでしょうか? 宜しくお願い致します。