• ベストアンサー

文字と変数の結合方法について

下記の構文で「100」の値を変数にしたいのですが、どのように記述すればよいでしょうか? UCHAR select[] = "SELECT * FROM DB WHERE 番号 = 100;"; VBみたいに"SELECT * FROM DB WHERE 番号 = " & bangou & ";"のように簡単に出来ないでしょうか?

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

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

sprintf を使うのが一般的かなと思います。 UCHR select[100]; /* 充分な量を確保する */ sprintf(select, "SELECT * FROM DB WHERE 番号 = %d", bangu); こんな感じ。 printf で使える書式設定が全部使えますから、かなり強力です。

poohpiglet2
質問者

お礼

sprintfを使えばよいのですね。 ありがとうございました。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

C++であれば、std::ostringstreamが使えます。 std::ostringstream osstr; osstr << "SELECT * FROM DB WHERE 番号 = " << bangou << ';'; といった具合です。 文字列を取り出すには、 osstr.str(); とすれば、std::stringが取り出せます。

関連するQ&A

  • 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とかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • MySQLのレコードを逆向きに並べる方法は?

    MySQLのレコードを逆向きに並べる方法は? MySQLを使って、掲示板を作ろうとしているのですが、 “db1”というデータベースに、“tbk”というテーブルを作り、 “bangou”というフィールドで、AUTO_INCREMENTで番号をふり、 下記のように、番号順にレコードをプリントしているのですが、 <?php $s=mysql_connect("localhost","root","パスワード"); mysql_select_db("db1"); $re=mysql_query("select * from tbk order by bangou"); while($kekka=mysql_fetch_array($re)){ print "<hr />"; print $kekka[0]; print "<br />"; print $kekka[1]; print "<br />"; print $kekka[2]; print "<br />"; print $kekka[3]; print "<br />"; } mysql_close($s); ?> このように、番号の若い順にレコードをプリントするのではなく、 番号(“bangou”)の古い順にレコードをプリントするようにするには、 どうすれば良いでしょうか?

  • 【再投稿】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とかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • SQL文で変数の使用

    VB6.0でオラクルDBにSQL文を発行したいのですが、 変数の値を使用して更新(update)や追加(insert) 処理を行うときの構文がわかりません。 どなたか教えてください。

  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。

  • データベースの結合について

    いつもお世話になっております。 すみませんが教えてください。 vb.netを使って 違うファイルのアクセスのデータベースを結合したいと思いますが うまくいきません。どのようにすればよいのでしょうか? SELECT * FROM (一覧表 IN 'C:\DB.mdb ' LEFT JOIN 固有情報 IN 'C:\DB2.mdb ' ON 一覧表.IDNo = 固有情報 .ID1)  としましたが、From句の構文エラーとなってしまいます。 よろしくお願いします。

  • 【SQL文】 where (colA & colB) in ((1 & 1), (2 & 2)) とは?

    VB6のプログラムを読んでいたら、ACCESSのMDBにSQL文を 投げる際に以下のような記述がありました。 ------------------------------------------------------ select * from tableA where (colA & colB) in ((1 & 1), (2 & 2)) ------------------------------------------------------ これはどういったことを表しているのでしょうか? 雰囲気的には (colA, colB) の組み合わせが (1, 1) か (2, 2) というようなことを表しているのかなと思うのですが はっきりとわからなかったため質問させていただきました。 また、これはOracle等の他のDBでも使用できる構文 なのでしょうか? ご存知の方がいらっしゃいましたら教えていただけたらと 思います。

  • クラスの中で関数・変数を使う方法

    クラスの中で関数や変数を使う方法はどのようにやるのでしょうか? public function getInvitedUsers($inviter_id) { $stmt = $this->pdo->prepare(implode(' ', array( 'SELECT *', 'FROM `user`', 'WHERE `sno` = ?', ))); $stmt->bindValue(1, $inviter_id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetchAll(); } この 'WHERE `sno` = ?', 部分の?のとこにセッションで保存した固有の番号と比較したいのですがどこに記述するべきかわからず困っております。 try { // 表示したいユーザーの情報を取得 $user = DB::connect()->getUser($_SESSION['user_id']); ここでユーザー情報を取得して $invit = $user['no'] 固有の番号を入れて 'WHERE `sno` = $invit', このようなイメージで比較したいのですが、$invit = $user['no']の部分はどこに記述するべきなのでしょうか? そもそもこのような'WHERE `sno` = $invit',での記述はできるのでしょうか? 無知で申し訳ございませんが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • LIKE検索の場合うまくいきません

    WEBアプリとSQLServerでSELECTをするときに不正をされないように SELECT * FROM DB WHERE DB.A = 検索文字 を SELECT * FROM DB WHERE DB.A= @A のようにして、@Aを後で指定しますが、 SELECT * FROM DB WHERE LIKE '%検索文字' のようにLIKE検索の場合うまくいきません。 どのように記述したらいいのでしょうか? SELECT * FROM DB WHERE DB.A LIKE @A --> 駄目 SELECT * FROM DB WHERE DB.A LIKE '%@A' --> 駄目

  • 【Excel+MySQL】select文で返ってきた値を変数に入れたい。

    ExcelVBAの中に 変数A = "select max(id) from data" と記述しselect文で返ってきた値(例えば100)を変数Bに代入したいと思います。 どのようにコーディングすれば可能でしょうか? いくら調べてもわからなかったので教えてください。 よろしくお願いいたします。

専門家に質問してみよう