• ベストアンサー

’ を文字列として認識させたい

要は「 Won't Fix 」という文字列があります。 この ' ダッシュ( シングルコークォーテーション? ) を含む文字列を、検索キーとして、db.Open ~ SQL = "SELECT * FROM submit" なり、ごく一般的な 手順で検索をかけようとしているのですが、エラーが 出てしまうのです。 この 「 ' 」 そのものを文字列として無事に検索 スクリプトに渡すにはどうしたらいいのでしょうか。。

  • yasu
  • お礼率79% (173/218)

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

  • ベストアンサー
  • aspkitty
  • ベストアンサー率100% (1/1)
回答No.2

SQL = "SELECT * FROM submit WHERE ×× ='Won''t Fix'" となります。「'」のエスケープはもうひとつ「'」をかさねてやればOK

yasu
質問者

お礼

ご回答ありがとうございます。 これからさっそく試してみることにします。

yasu
質問者

補足

これで対応できました! ずばりです。 ありがとうございました。

その他の回答 (2)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.3

検索対象のフィールド名がfldHogeだとすると、基本的には SQL = "SELECT * FROM submit WHERE fldHoge Like ""%'%""" のようなSQLで検索できると思うのですが・・・ これで駄目でしたら差し支えない範囲で該当個所のソースと使用しているデータベース(MSDE, SQL Server, Oracle等)を教えていただけないでしょうか? 参考まで

yasu
質問者

お礼

回答ありがとうございます。 Windows 2000 上でAcess を使用しています。 参考までということで、ソースは以下のように 書いています。 QueryStr="SELECT * FROM submit WHERE FollowUp LIKE " & "'%" & session("string") & "%'" & " OR Title LIKE (.... 10数フィールド続く) 最初のお二人の回答をまずは試してみたいと思います。

  • blue_leo
  • ベストアンサー率22% (541/2399)
回答No.1

aspに関しての知識はありませんが シングルクォートをそのまま入れるのではなく 検索する側、検索される側もエスケープ文字などに変換してマッチングを取ればいいのではないかとおもいますが。

yasu
質問者

お礼

ご回答ありがとうございます。 この案も方法の一つとして、検討させていただきます。

関連するQ&A

  • 文字列を入力すると文字化ける

    SQLにSELECT文を書き、サーブレットを通しjspに結果を出力したいのですが SQL文をこのように書いているにもかかわらず↓ "select sum(oni) as oni from テーブル名 where ken = '" + ken + "'"; いざ文字列を入力し、デバッグを確認すると下記のような文字化けを起こしています↓ select sum(oni) as oni from テーブル名 where ken = '本社' 文字列を入力してそのまま反映させるにはどこを書き換えれば良いのでしょうか?

  • 文字列の動的な結合

    C♯、.net frameworkdは2.0の環境です。 メソッドでSQL用の文字列を作っています。 引数によって、JOINするテーブルを変えたいのですが、StringBuilderではなく、 単なるStringの変数を、ひたすら + で結合している状態なので、悩んでいます。 String sql; sql = " select " + " tbl.column1 " + " from " + … こんな感じです。 StringBuilderで作り直したいのですが、諸事情により難しいので、+での文字列結合をしつつ、 ところどころ、引数を見て文字列を結合したりしなかったり…ということをスムーズにできる 方法はないでしょうか?

  • DB2でREPLACEによる文字列の置換

    ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。

  • Pro*Cの大文字小文字

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = '1'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = '1'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = '1'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • 【再投稿】Pro*Cの大文字小文字

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = \'1\'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = \'1\'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = \'1\'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • ASP でオートナンバー型の数値を拾いたい

    休日なのに悲しくなるほど、以下の問題でハマってます。 どうかよろしくお願いします。 以下は、『 今日からつかえる ActiveServerPages2.0 - 実用サンプル集 ~ 等 』を参考にしたDBオープンの 下準備です。 ------------------------------------------------- Set db=Server.CreateObject("ADODB.Connection") db.Open "test" SQL="SELECT * FROM Master WHERE((Master.SerialNo)='" &_ Request.QueryString("SerialNo") & "')" Set RS=db.Execute(SQL) ------------------------------------------------- ・・・とよくありそうな ODBC による Access の mdb ファイルの検索をやろうとしているのですが、以上の スクリプトだと、どうしてもオートナンバー型の数値の列 を検索してくれません。(一番最後の Set RS=db.Execte(SQL) でエラー発生 ) テキスト型ならどの列でも大丈夫です。 これについて何かよい解決法はありませんでしょうか。 昨夜から延々泊り込みで頭抱えている次第です。

  • 長さ1の空文字列?

    タイトルの通り、長さ1の空文字列で困っています。 現在、Linux、Apache、MySQL、PHPを使って3階層アプリケーションを作っています。 予めMySQLでテーブルの形を決めておいて、CSVからデータを読み込ませておき、 PHPでSQL文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(CSV上でブランクだったもの)は表示させたくないので、 PHPで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然NULLの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 DB上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'… という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 MySQL:5.0.95 PHP:5.1.6 Linux:RHEL5 Apache:2.2.3

    • ベストアンサー
    • PHP
  • 大文字小文字を識別しない検索方法について

    DBに例えば、nameフィールドに"SUzuKI"と登録されていたとします。 この場合に、SQLで、"select * from table where name LIKE '%uzuki%';"と検索してもヒットしません。大文字小文字を判別するからです。大文字小文字を判別しない検索方法についてお分かりになる方がいらっしゃいましたら、ご教示をお願いいたします。 よろしくお願いいたします。

  • mysqlに格納したエクセルファイルの、シート内の文字列を検索したいの

    mysqlに格納したエクセルファイルの、シート内の文字列を検索したいのですが上手くいきません。 半角英数の文字列なら、以下のSQL文で引っ張ってくることができました。 SELECT * FROM テーブル名 WHERE 列名 LIKE '%abc%'; mysqlのバージョンは5.1です。 検索はPHPで行おうと思っています。 どなたか知っている方いらっしゃいましたら、よろしくお願いします。

  • InterBase(firebird)で固定文字列と文字列型フィールドのunionでエラー

    お世話になっております。 InterBase(firebird)のunionについての質問です。 あるテーブル(test_table)に test_cd VARCHAR(2) ; というような、文字列があるとします。 これを単純に抽出するSQL と、固定文字列を値の代用とするSQL をunionで求めようとした際に、以下のSQLで問い合わせました。 select test_cd from test_table where [条件] union select '00' test_cd from test_table where [条件] 問い合わせた際に以下のようなエラーが返ってきました。 Dynamic SQL Error SQL error code = -104 Invalid command Data type unknown それぞれのSQLは正しく返ってくるのですが、 unionで結合した際にこのエラーが返ってきます。 どのように対処すればよいのでしょうか、 ご回答をよろしくお願いいたします。