• 締切済み

Varcharサイズ変更後にエラー

khazad-leftyの回答

回答No.1

IsNull関数というのはVB6のIsNull関数? それなら単純にその変換部分に何らかの問題があるんじゃないかと思いますが。 あと、NVarcharに変換したとか…(それでこういうエラーがでるとも思えませんが) ビュー経由でアクセスしているならそのビューを作りなおすとか。 あ。まさかMDBのリンクテーブル経由でDBアクセスしてるとかはないですよね? その場合、リンクテーブルは作り直しになりますが…。

PonTaRo_M
質問者

補足

khazad-leftyさん、ご回答ありがとうございます。 >>IsNull関数というのはVB6のIsNull関数? はいそうです。この関数をは他の列でも使用してますのでこの部分が問題の可能性は低いような気がします。 そもそもデバックで該当部分にブレークを張ってみてみると、DBから返却された列に、値が入っていたり、NULLになっていたりするんです。本来は値が入っている項目になります。 なにかプログラムのバグという雰囲気ではないのです。 MDBは使用してません。SQLServerにODBC(DAO)で接続しています。 確かにビューを呼び出してるので、ビューを作り直してみましたし、ビューを経由しないで直接テーブルを参照しても改善されませんでした。 なんとなく、SQLServer側の特にカーソル関係の問題ではないかと思いますけど、正直わかりません。 ネットでも同様の現象の事例が見つからず、解決の糸口すらない状態です。

関連するQ&A

  • Pro*CでVARCHAR2項目の検索

    こんにちは。たぶんとても基礎的なことと思うのですが。。。 Pro*CでSELECTするとき、WHERE句の中でVARCHAR2項目を条件に入れています。 が、どうも検索がうまくできなくて質問しました。 ホスト変数の定義…  char VVV[5]; 検索するところ… select xxx into :yyy from ZZZ where ZZZ.varchar2no4BYTE = :VVV ; のような感じです。ZZZ.varchar2no4BYTEの型はVARCHAR2(4)です。 で、ZZZ.varchar2no4BYTE が"1234"と"12"の2つのレコードを 登録しておいて、VVVに"1234"を入れると、ちゃんと検索できました。 んが、VVVに"12"を入れても検索されません。 そんなのあり?と VVVに"12 "を入れてもだめ、 VVVをVARCHAR構造体?にして、"12"で長さ2にしてもだめ、 だけどZZZ.varchar2no4BYTEがCHAR(4)だと"12"でOK、 なんなんだとPro*Cのマニュアル見てもNUMBER型の検索例ばかり、 というところで力尽きました。 (あー、CHAR_MAP=STRING って関係あるですかね) 動的SQLにすればよいのかもしれませんが、事情で使えないのです。 それ以前にホスト変数の理解が間違っているのではないかと思い、 お聞きするしだいです。

  • selectで特定の列をwhereで指定するとエラーになる

    今MYSQLのselect文でエラーが出ていて、where でgroupを指定するとエラーが出ます。どこかの書き方が間違っているようなのですが、正しい書式を教えていただけないでしょうか? 色々と実験してみて同じ書き方でほかの列を検索したときは検索が出来ることがわかったので、どこを直していいのかわからない状態です。 環境はWinXP Home SP2 MySQL 5.0.27-community-nt です。 操作しているテーブルは以下の通りで、IDやscodeを検索しようとすると正常に表示されます。 CREATE TABLE `product` ( `ID` int(11) default NULL, `id_seq` int(11) default NULL, `scode` varchar(50) default NULL, `rec_ctl` varchar(10) default NULL, `dir` varchar(100) default NULL, `image` varchar(100) default NULL, `image_s` varchar(100) default NULL, `brand` varchar(100) default NULL, `goods` varchar(100) default NULL, `group` varchar(50) default NULL ); 実行したSQL文と結果です。 mysql> select * from product where group = 'a'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group = 'a'' at line 1 IDなどであれば検索が出来ます。 mysql> select * from product where id = 'a'; Empty set (0.00 sec) それではよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 列の桁数変更の方法 (oracle 8i)

    oracle 8.1.7 を使用 下表の列2を下記のように変更したいのですが 方法(SQLplusにて)が分かりません、 ご教示くださいますようよろしくお願いいたします (変更前)列2:T_MIX_PTN VARCHAR2(1) NOT NULL (変更後)列2:T_MIX_PTN VARCHAR2(3) NOT NULL 表 :T_MIX ---------------------------------------- 列1:T_MIX_CD VARCHAR2(4) NOT NULL 列2:T_MIX_PTN VARCHAR2(1) NOT NULL 列3:T_MIX_CNT NUMBER(1,0) NOT NULL 列4:T_MIX_GCD1 VARCHAR2(6) NOT NULL 列5:T_MIX_GRATE1 NUMBER(4,1) NOT NULL 列6:T_MIX_GCD2 VARCHAR2(6) NOT NULL 列7:T_MIX_GRATE2 NUMBER(4,1) NOT NULL

  • 【SQLServer】IS NULLのパフォーマンス

    お世話になっております。SQLSERVER初心者です。 NULLを含む列COL1を検索条件に入れる場合、 パフォーマンスの観点から WHERE COL1 IS NULL とするのではなく WHERE ISNULL(COL1,'') = '' とするよう有識者から言われました。 そこで質問なのですが、 (1)IS NULL は基本的に上記のように変換したほうが早くなるのですか? (2)COL1にもしインデックスが設定されていたとしても、上記の場合だとどちらも効かないですよね? 詳しい方おしえてください。 よろしくおねがいします。

  • 変数の取り扱いについて

    はじめまして。思いっきりSQLSERVERは初心者なんですが宜しくお願いします。 現在SQLSERVER2005です。 ややこしくなるので要点だけ以下まとめています。 変数を利用してレコードを抽出する時なんですが… ALTER PROCEDURE Test @Rank INT BEGIN DECLARE @SELECT AS VARCHAR(100) DECLARE @WHERE AS VARCHAR(100) DECLARE @SQL AS VARCHAR(200) SET @SELECT = 'SELECT * FROM tblA ' SET @WHERE = 'WHERE Rank > ' + @Rank SET @SQL = @SELECT + @WHERE EXEC(@SQL) END 実行すると varchar の値 'WHERE Rank > 'をデータ型 int に変換できませんでした。 となります。 Rank部分が数値なんですが、どのように取扱いすべきなんでしょうか。

  • エラー「無効な識別子です」

    ORA-00904: "EMPNO": 無効な識別子です と表示されます。 解決方法知っている方、教えていただければ幸いです。 SELECT EMPNO, ENAME, D.DEPTNO, DNAME FROM DEPT D WHERE EMPNO = (SELECT EMPNO FROM EMP WHERE MGR IS NULL) SQL> DESCRIBE EMP; 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NOT NULL NUMBER(2)

  • [ASP+SQLserver]空白フィールドのWHEREは?

    こんにちわ。 ASPとSQLサーバで簡単なWebを作っています。 まず、以下のようなデータがあるとします。 (列名) 列A,列B,列C (データ)aaaa,NULL,NULL      bbbb,1111,NULL ※NULLは文字列ではなくNULLです。 そこでNULLであるレコードを取得したいので次のようなクエリで実行してみました。 SELECT * FROM sample WHERE(列B='') ORDER BY 列A しかし、あえなく敗北・・・。 また、NULLでないレコードを取得するために、 SELECT * FROM sample WHERE(列B<>'') AND(列C<>'') ORDER BY 列A しかし、こちらもあえなく敗北・・・。 こういうケースはどのようなクエリでやればいいのでしょうか? お手数をお掛けいたしますが宜しくお願いいたします。

  • SQLServerでのSELECT文をORACLE9iで使用したいのですが・・・

    SQLServer2000で使用していたSELECT文をORACLE仕様にする場合どのように修正すればよいですか? 試行錯誤やっているのですが、思うようにできません。 関数a(関数b())といった作法は無理なのでしょうか? ※関数a(関数b())のような構成だと [ORA-00938: 関数の引数が不足しています] 等が発生する (SQLServerでのSELECT文) SELECT F列A + SPACE(11-LEN(F列A)) + ISNULL(F列B,SPACE(0)) AS F列C, F列A ,F列B FROM T表 どなたかご教授おねがいします

  • 列名の変更 (Oracle 8.1.7)

    表:TB_TEST 列:TB_TEST_MODE VARCHAR2(1) があります。列:TB_TEST_MODE VARCHAR2(1)を下記に変更するには SQLplusでどのようにすれば良いのでしょうか? (1)列名の変更:TB_TEST_TESTMODE VARCHAR2(1) (2)型式の変更:TB_TEST_MODE NUMBER(1) (3)サイズの変更:TB_TEST_MODE VARCHAR2(5) (4)サイズの変更:TB_TEST_MODE NUMBER(5) 以上、ご存知の方ご教示宜しくお願いいたします

  • SQLServer7.0で、SELECT文で列を抽出する ※Nullと0の条件について

    SQLServer7.0で、SELECT文で列を抽出する際なんですが、 列A 列B --------- 1  Null 2  Null 3  1 ↑のテーブルから、列Aの1、2だけを抽出するSELECT文を SELECT * FROM XXX WHERE 列B <> 1 と作成したのですが、うまく動作しません(汗) データが一件も取れないのです。(列B:tinyint型、Null許容) テーブル内のデータをNull→0にして、同SELECT文で抽出すればうまくいったのですが。。 Nullデータを、<>XX という条件で取得することはできないんですかねえ・・・。 それとも、テーブルの設定か、条件の記述方法がまずいんでしょうか。 どなたか、ご存知あればアドバイスをお願いします。