• 締切済み

nvarchar型で指定して文字列幅を越えた文字列をクエリした場合のエラー

nvarchar型で文字列幅を(255)と指定したテーブルに、指定幅を越えた文字列にてクエリを送った場合に、エラーがはきだされると思ったのですが、 なぜか吐き出されません。 超過していた文字列が黙って切り捨てられた文字列で、insertが完了します。 エラーをだしたいのですが、そもそもエラーをなくすような設定があるのでしょうか?

みんなの回答

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

確証が得られていないので、自信はないのですが、 SQL Serverの接続オプションで、ANSI_WARNINGS、ARITHABORT、 ARITHIGNOREがOffだと、エラーは発行しなかったかと思います。 なので、 http://technet.microsoft.com/ja-jp/library/ms190707.aspx をみながら、サーバ設定を変更するか、 サーバ設定変更が容易にできない環境にある場合は、 INSERT処理を行っているストアドや、ストアドじゃなく普通にINSERT している場合は、下記のようにしてみてください。 (エラー番号とメッセージが出たような記憶があります) ■ストアドの場合のイメージ -- エラーメッセージを表示するよう設定 set ANSI_WARNINGS on set ARITHABORT on SET ARITHIGNORE on go -- INSERT処理用のストアド CREATE PROCEDURE XXXXXX AS BEGIN   問題のINSERT文の実行 END ■普通にINSERTしている場合 set ANSI_WARNINGS on set ARITHABORT on SET ARITHIGNORE on go 問題のINSERT文の実行 的外れだったら、すいません。

MrYoYoYo
質問者

お礼

ご回答ありがとうございます。 まだ、確認がとれていないのですが、なんとなくSQLサーバの仕様のような気がしてきました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • access2003 「#エラー」を文字列にしたい

    テキスト型に入れた値を数値に変換し、「#エラー」を文字列にしたい テーブル1のデザインビューで ・フィールド1 テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。  「#エラー」を「未設定」という文字列にしたいのですが どうすえばいいのでしょうか? よろしくお願いします。

  • レコードの文字列をフィールド抽出のクエリとして指定

    レコードの文字列として リンゴ ミカン イチゴ となっていたときに、この3つを別のテーブルにあるフィールド名のリンゴ、ミカン、イチゴのみを抽出するクエリをVBAで指定できますか?

  • Access:クエリーにて集計後に文字列結合したい。

    Accessのクエリーでレコードのグループ化を行っている状態で、あるフィールドに対してだけ文字列の結合を行いたいのですが、集計部分をどのように指定すればよいかわからず困っています。 イメージとしては、SQLビューにて、グループ化されたレコードの合計が、  SUM([テーブル名].[フィールド名]) で求められる様に、 エクセルの文字列結合関数  CONCATENATE([テーブル名].[フィールド名]) が使いたい、という感じです、、 Accessにおける文字列結合は"&"を使うとありましたが、この場合どのように記述するべきでしょうか?

  • テーブルの項目幅を固定するには?

    ものすごく簡単な質問だと思うんですけど、なんせ初心者なのでどうかわかりやすく教えてください。 テーブル定義で%で列幅を指定しているのに、その中に文字をいれたとき、 その文字幅にあわせて幅がかわるんです。 そもそも%で指定するときの%って何に対しての%なんですか?画面幅?? それともテーブル全体の幅ですか? 横にスクロールしてもいいので列幅を固定する方法を教えてください。 過去の質問をチェックしてみたのですが、よくわかりませんでした。

    • ベストアンサー
    • HTML
  • ACCESSのクエリの中でのクエリ指定

    ACCESSのクエリで複数テーブルを結合させ明細表示させました。 その明細作成クエリーを更にそのクエリをテーブルと指定して 合計のクエリを作成して結果を確認すると合計が違っていました。 確認の為、集計を取りその明細クエリーをクエリー上でテーブル 指定してみたところ、元の明細クエリーのみの場合とレコード数 がかわっって表示されまました。 クエリーのテーブルにクエリを指定するのはNGなのでしょうか。 何方かなぜそうなるのか、また、正しい方法があれば教えてください。 宜しくお願いします。

  • CSSでボックス幅を文字列に合わせたい

    ボックス幅を文字列の幅に合わせるにはどうしたらいいのでしょうか。 テーブルではセルにwidth属性を指定しなくても文字列の幅になりますが、ボックスではwidthプロパティを指定しなかったら領域全体の幅になります。white-spaceプロパティでnowrap指定し、widthプロパティで文字列より小さいサイズに指定するとできるのですが、他に指定する方法があれば教えて下さい。

    • ベストアンサー
    • HTML
  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • Access 選択クエリでの文字列の連結でピリオドを使いたい

    Accessで、選択クエリにて文字列を連結することで たとえば '<a href="http://www.google.co.jp/' & [aaaaa] & '/123.html">' ↑固定文字列          ↑ここだけ変わる ↑固定             ↓ <a href="http://www.google.co.jp/aaaaa/123.html"> のようなurlを作りたいのですが、ピリオドをそのまま入れると クエリ実行でエラーになりました。 \マークでエスケープしてみたらエラーになりませんでしたが、 テーブル表示では <a href="http://www\.google\.co\.jp/aaaaa/123\.html"> のようにそのまま表示されてます。 何とかピリオドを使ってURLを作る方法はないでしょうか。

  • javascriptでクエリ文字列を取得できますか?

    javascriptでURLの末尾に付与した?以降の文字列、いわゆる"クエリ文字列"を取得する事は出来ますか? 出来る場合、構文を教えて下さい。

  • 文字列の長さを指定して BULK INSERT するには?

    20,1899-12-3020,1899-12-3020,1899-12-3020,1899-12-30 このような文字列がファイルにあるのですが、 1899-12-30 の部分を、文字数10と指定して データを取り出すことは可能でしょうか? この場合のデータは年齢と生年月日です。 BULK INSERT INTO [BIRTHDAY] FROM 'C:\sql\birthday.txt' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '')