SQL文での文字と数字の変換方法

このQ&Aのポイント
  • SQL文で文字と数字の変換方法に困っています。データーベースのフィールド属性が数字なので、文字を数字に変換したいと思っていますが、エラーが出てしまいます。直接文字列を打つと同じエラーが出ますが、直接数字を打つと正常に動作します。データーベースのフィールド属性を変えることはできないので、どうしたら文字を数字に変換できるのかわかりません。ご教授お願いします。
  • SQL文で文字と数字の変換に問題があります。データーベースのフィールド属性が数字なので、文字を数字に変換したいのですが、エラーが出てしまいます。直接文字列を打つと同じエラーが出るため、問題の原因は文字の扱いにあると考えています。データーベースのフィールド属性を変更することはできないため、どうしたら文字を数字に変換できるのか知りたいです。アドバイスをお願いします。
  • SQL文での文字と数字の変換について困っています。データベースのフィールド属性が数字なので、文字を数字に変換する必要がありますが、エラーが発生してしまいます。直接文字列を打つと同じエラーが出るため、文字の扱いが問題だと思われます。データベースのフィールド属性を変更することはできないため、どうすれば文字を数字に変換できるのか分かりません。アドバイスをお願いします。
回答を見る
  • ベストアンサー

文字を数字に変換したい

こんにちは SQL文で困っています。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = '" & aaaa & "'" を発行した時にエラーが出ます。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = '1000'" 直接文字列を打つと同じエラーがでます。 SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = 1000" 直接数字を打つと正常に動作します。 データーベースのフィールド属性が数字なのでこのエラーが出ていると思い syanoを数字フィールドにしようと aaaa=1000+0 などやってみたのですが、計算はできても、中身は1000という文字になっているようです。 AS/400のデーターベースをCAで参照しIIS5.0で表示させたいのでフィールド属性は変える事ができませんので、どうしてもaaaaを数字にしたいのですがどうしたら良いのかわかりません どなたかご教授お願いします。

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

SQL = "select * from LIBL.APF" SQL = SQL & " WHERE AAAA = " & aaaa 上記では?

yorikiyo
質問者

お礼

できました ありがとうございました。

関連するQ&A

  • データベースのワイルドカードは%ではないの?

    アクセスのテーブルに あ い う があり、 SQL文で *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "%あ%")); *********************************************** としてもエラーにならないけど、「あ」が抽出されません。 *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "*あ*")); *********************************************** にすると、「あ」が抽出されます。 アクセスなどのデータベースのワイルドカードは%だと思っていたのですが違うのですか?

  • 2バイト文字での SELECT文 がうまくいきません

    select * from table where color = '赤' という単純なセレクトなのですが、='赤' の部分が 文字化けします。redなどにするとエラーは起きません。 これはクエリを操作できるエディタ上でもアプリのソース上(画面上)でも同じです。 データベースの文字コードはeuc、ソース自体もeucです。 ちなみに、colorを変数として mb_convert_encoding をもちいて $color = $_POST["color"]; // postされた値(赤とか) $color = mb_convert_encoding($color,"EUC-JP",mb_detect_encoding($color)); "select * from table where color = '".$color."'"; などのようにするとうまくいきます。 しかし $sql = "select * from table where color = '赤'"; $sql = mb_convert_encoding($sql, "EUC-JP",mb_detect_encoding($sql)); のように固定2バイト文字を入れると変換してもエラーです。 この問題は何が原因でしょうか? 分かる方居られましたらお願いします。

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

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

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

  • 文字列のフィールドのOrderbyについて

    Oracle9iです。(厳密にはVB6も絡んでいます) 説明の便宜上、若干簡略化しています。 テーブルtestがあります。 SQL> desc test; 名前 NULL? 型 --------- -------- ---------------- ID VARCHAR2(10) です。 (1)testテーブルのデータが、 SQL> select id from test ; ID ---------- 3 5 11 551 のとき、select id from test where id between 1 and 4;を実行すると、 ID ------- 3 select id from test where id between '1' and '4';を実行すると、 ID ------- 3 11 となってしまいます。 別のケースで、 SQL> select id from test ; ID ---------- 3 5 11 551 C44433 aaa 6行が選択されました。 のデータの場合、 select id from test where id between 1 and 4;はORA-01722:数字が無効です のエラーとなり、 select id from test where id between '1' and '4';だと ID ------- 3 11 となってしまいます。 自分の希望としては select id from test where id between '1' and '4'にて、 ID ------- 3 のみ表示をさせたいです。 (2)SQL> select id from test ; ID ---------- 3 5 11 551 C44433 aaa のとき、たとえば、 select id from test where id between '12' and 'DD'; を実行し、12以上でDD以下のデータを取得したいのですが、 (理想) ID ---------- 551 C44433 実際は、 ID ---------- 3 5 551 C44433 と出てしまいます。 仕様は上司が考えてるので、 テーブル構造にそもそも問題があるのならそれ相応の説明をしたいと思っています。 ですが、基本的にはSQLの条件文を変更したいのですが、 アドバイスをいただけたらと思います。 ちなみに説明の簡略化のためフィールドを少なくしていますので select RPAD(id , 10) from test where ~ のように select のあとに変換するのはできません。 実環境は基本的には select * from ~としたいので。 よろしくお願いいたします。

  • 【再投稿】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文で数字+指定文字列がヒットする記述方法

    mySQLを使ってます。 SQL文で以下のことが実現したいです。 フィールドに登録されている文字列が http://www.AAA.jp/BBB/CCC/08191.html/?cp=waribiki http://www.AAA.jp/shop/DDD/EEE/08191.html http://www.AAA.jp/shop/DDD/EEE/ZZZ.html というタイプがあります。 SQL文で検索結果を表示したいのは、 http://www.AAA.jp/shop/DDD/EEE/数字.html のように右から「数字.html」の場合のURLパスだけを抽出したいです。 SELECT * FROM `テーブル名` WHERE `フィールド名` LIKE '%html' とやってみましたが、 http://www.AAA.jp/shop/DDD/EEE/ZZZ.html というものもヒットしてしまうため 右から「数字.html」の場合だけのSQL文の書き方を教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 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で結合した際にこのエラーが返ってきます。 どのように対処すればよいのでしょうか、 ご回答をよろしくお願いいたします。

  • 数字ならできるのですが、文字だとできません。

    フォームにデータを入力しSubmitを押すとデータベースに データを書き込むというプログラムについて分からないことが あります。 フォームに「数字」を入力し送信を押すとクエリの送信に成功し データベースに書き込みができるのですが、 「日本語や英語などの文字」を入力し送信すると、クエリの送信に失敗し データベースに書き込みができません。 文字を入力するフィールドは varchar(40) sjis_japanese_ci NULL で作成しました。 DBに書き込むPHPは以下のとおりです。 <?php require_once("db.php"); $prefCd = $_POST['cd']; $prefName = $_POST['name']; $aff = $_POST['no'];  $plname = $_POST['lname']; $pfname = $_POST['fname']; $sql = "INSERT INTO db VALUES(".$prefCd.",".$prefName.",".$aff.",".$plname.",".$pfname.")"; $result = executeQuery($sql); ?> 数字だと書き込みがDBに書き込みができることから DBのフィールドの作成の方法が間違っているのかとは おもうのですが。。。 どなたかご教授下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 特定条件でWHERE句の条件を変更したい

    @jouken int @sql varchar(MAX) @select varchar(MAX) @where varchar(MAX) set @select = 'select * from table1' set @where = ' where case when @jouken = 0 then 'field1 = 1' when @jouken = 1 then 'field1 = 1 or field2 = 1' when @jouken = 2 then 'field1 = 1 or field2 = 1 or field3 = 1' end ' set @sql=@select+@where exec(@sql) 上記のような文字列の組み合わせでの作成でやりたいことはできたのですが、 こちらを直接SQLの中でやりたいのです。 以下の文は機能しません。 select * from table1 where case when @jouken = 0 then field1 = 1 when @jouken = 1 then field1 = 1 or field2 = 1 when @jouken = 2 then field1 = 1 or field2 = 1 or field3 = 1 end ご教授の程、よろしくお願い致します

専門家に質問してみよう