• ベストアンサー

お願いです!!

kenzo-2000の回答

  • ベストアンサー
回答No.1

こんにちは。 「シングルクォーテーション」でいいのでしょうか? 例はSQLみたいですが、(BDEならダブルクォーテーションマークですが、) シングルであれば「FIELD1 = ' + Chr(39) + ';」 としてどうですかねぇ? (実験していません。)

653
質問者

お礼

返信ありがとうございました。 色々と調べた結果、シングルクォーテーションを表示したい場合は、 もうひとつエスケープシーケンスとしてシングルクォーテーションを 付加するみたいです。(実験しました) MOJIRET := select * from ABC WHERE FIELD1 = '''' + HENSUB + ''''; これで文字列変数MOJIRETには(HESUBには'suzuki'とすると) 「select * from ABC WHERE FIELD1 = 'suzuki'」と なりました。 色々とありがとうございました。

関連するQ&A

  • Oracleのシングルクォーテーション

    いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。

  • phpの<br>\nと\nとエスケープシーケンスについて

    現在、phpを学んでいるのですが、いきなり"<br>\n"と"\n"の違いがわからなくて困っています。\nはエスケープシーケンスで改行を意味するのですよね?<br>も改行を意味するから・・・わざわざダブルクォーテーションの中に<br>を書かなくても良いのでは・・・ と思うのですが・・・違うのでしょうか!? またエスケープシーケンスについてなのですが、 ¥を付けて表す特殊文字がエスケープシーケンスなのですね。 しかし、シングルクォーテーション内では「¥’」と「\\」だけが使える。 ダブルクォーテーション内では記述すると画面に表示されないということですが・・・。 ではエスケープシーケンスっていつ使うのですか?使い道がないような気がするのですが・・・・。 使えるのは、シングルクォーテーション内の「¥’」と「\\」だけになるのでは・・・・。 そのへんのところを教えてください。

    • ベストアンサー
    • PHP
  • '(シングルクォーテーション)の検索

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

  • 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
  • PHPでjavascriptを書き出すときのクォーテーションの使い方

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

    • ベストアンサー
    • PHP
  • PHPのエスケープシーケンスに関して

    PHPで文字列内で(※だぶるクオーテーションおよびシングルクオーテーション)使用するエスケープシーケンスについて、質問です。 PHPでは例えば \(※バックスラッシュ)を文字列内に含めるときバックスラッシュを二つ続けて入力して print "\\"; 上記の用に記述することになると思いいます。 ただ、上記とは違い  print "  \ "; と上記のようにバックスラッシュの前後にスペースをおいて print することでバックスラッシュをエスケープせずに出力させることができます。 本当はものすごく基本的な動作だと思うのですが、 ちょとこの動きが理解できません。 オライリー本をみてもバックスラッシュはエスケープしないといけないと 記載があります。 よろしくご教授ください。

    • ベストアンサー
    • PHP
  • MSアクセス2013のSQLでESCAPE文字指定

    MSアクセス2013のSQLでLIKE検索時のエスケープ文字を別の文字に変更する ESCAPEキーワードを記述したら『演算子がありません』とエラーになったのですが 使えないんですか? select * from テーブル where 項目 like 'abc' ESCAPE '#' ;

  • VBでSQLの記述

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

  • SQLの結果で“文”を作成する方法について???

    SQL文で「シングルクォーテーション」や特殊文字?を利用した文字列を作成方法がわかりません。。どなたか詳しい方ご教示いただけませんでしょうか? SQLで問い合わせ結果を文字列が含んだ形式で出したいと思っています。 <例> select 'これは、''||T.T1||''の''||T.T2||''の結果です。期間は、''||T.T3||''までです。' from T where ・ ・ ・ <例> このような感じで作っています。 テーブル名:T T1:文字列型 T2:文字列型 T3:日付型(yyyy/MM/dd) です。 T1とT2のみの文字列でしたら問題は無いのですが、T3の日付型を含んでしまうと何故かうまくデータが抽出できません。 何かいけない点があるのでしょうか? 特殊文字についてもよくわかっていないのもいけないのですが・・・ よろしくお願いいたします。

  • SQL シーケンスについて

    Orcle8iを使用しています。 INSERT INTO SELECT で別のテーブルのデータを追加したいのですが、そのうち1つフィールドには、シーケンスオブジェクトで取得した値を入れたいと思っていますが、INSERT文が作れません・・・。 例えば ----------------------------- INSERT INTO TABLE1(FIELD1,FIELD2,FIELD3)   SELECT --SELECT SEQ.NEXTVAL FROM DUAL??--     FIELD1_2,     FIELD1_3 FROM TABLE2 WHERE FILED1_2='X'; ----------------------------- という場合、TABLE1のFIELD1に連番を入れたいのですが 書き方が分かりません。 http://www.okweb.ne.jp/kotaeru.php3?q=347146 上記URLの質問に、シーケンスのSELECT文を副問い合わせにして・・・という回答があったのですが、それもよく理解できませんでした・・・(T_T) シーケンスのSELECT文をどう埋め込めば良いのでしょうか? どなかた教えていただけませんか? よろしくお願いします。