none
Transact-SQL REPLACEをUPDATEで使用する場合について RRS feed

  • 質問

  • いまさらですがTransact-SQL  REPLACEについて質問させてください。
    SQL server2005  SQL Server Management Studioにて

    テーブル得意先マスタ のフィールド得意先名にて ㈱AAAACC を ㈱BBBBCC'に変更したいと思うのですが、

    UPDATE
    得意先マスタ
    SET
    得意先名 = REPLACE(得意先名,'㈱AAAA','㈱BBBB') 
    Where
    請求先コード = '(対象となるコードを指定)'

    これで行けるかなと思ったのですが、
    文字列データまたはバイナリ データが切り捨てられます。
    ステートメントは終了されました。
    とのエラーメッセージが返ってきました。

    updateの場合はどうすればよいのかご教授頂けると助かります。

    よろしくお願いします。

    2009年11月6日 2:17

回答

  • エラーになりませんでした。

    CREATE TABLE [dbo].[得意先マスタ](
     [請求先コード] [varchar](3) NOT NULL,
     [得意先名] [nvarchar](7) NOT NULL)

    delete from [得意先マスタ]
    insert [得意先マスタ] values ('AAA','㈱AAAACC')
    select * from [得意先マスタ]

    UPDATE
    得意先マスタ
    SET
    得意先名 = REPLACE(得意先名,'㈱AAAA','㈱BBBB') 
    Where
    請求先コード = 'AAA'

    select * from [得意先マスタ]

    でも
    得意先名 = REPLACE(得意先名,'㈱AAAA','㈱BBBBx')
    のように更新後の名前を長くすると同じエラーになります。
     [得意先名]が桁あふれしていませんか?

    • 回答としてマーク RZ250 2009年11月6日 2:41
    2009年11月6日 2:36

すべての返信

  • エラーになりませんでした。

    CREATE TABLE [dbo].[得意先マスタ](
     [請求先コード] [varchar](3) NOT NULL,
     [得意先名] [nvarchar](7) NOT NULL)

    delete from [得意先マスタ]
    insert [得意先マスタ] values ('AAA','㈱AAAACC')
    select * from [得意先マスタ]

    UPDATE
    得意先マスタ
    SET
    得意先名 = REPLACE(得意先名,'㈱AAAA','㈱BBBB') 
    Where
    請求先コード = 'AAA'

    select * from [得意先マスタ]

    でも
    得意先名 = REPLACE(得意先名,'㈱AAAA','㈱BBBBx')
    のように更新後の名前を長くすると同じエラーになります。
     [得意先名]が桁あふれしていませんか?

    • 回答としてマーク RZ250 2009年11月6日 2:41
    2009年11月6日 2:36
  • あんにんご 様 大変失礼しました。
    ご指摘の通りです。

    これは簡単と思い 実行したら「あれっ?」となり 基本的な判断すらしないままに質問してしまいました。
    余りに物事を簡単に判断してしまい恥ずかしいです。

    有難ございました。
    2009年11月6日 2:46