sql >> データベース >  >> RDS >> Sqlserver

SQLServerテーブルで列をNullから非Nullに変更する方法-SQLServer/T-SQLチュートリアルパート52

    シナリオ:

    あなたは銀行でSQLServer開発者として働いています。 TechBrothersITデータベースに以下の定義のDbo.Customerテーブルがあります。

    Create Table dbo.Customer
    (FirstName VARCHAR(50) Not Null,
    LastName VARCHAR(50),
    Age SmallInt,
    PhoneNumber CHAR(9),
    DOB Date,
    Gender CHAR(1)
    )
     お気づきのように、LastNameはNullになる可能性があります。それは問題。会社は後で気づき、常にLastNameの値を持ちたいと考えています。分析を行い、Alterスクリプトを記述して列をNullからNotNullに変更するように求められます。検討することや提案することは何ですか?

    解決策:

    このシナリオで最初に考慮すべきことは、Last NameasNullのテーブルにすでに値が挿入されているかどうかを確認することです。その場合、実際に先に進んで列をNullからNotNullに変更することはできません。を実行しようとすると、以下のエラーが発生します。
    メッセージ515、レベル16、状態2、行14値NULLを列「LastName」、テーブル「TechBrothersIT.dbo.Customer」に挿入できません。列はnullを許可しません。 UPDATEは失敗します。
    これは、最初にこの列のNull値を処理する必要があることを意味します。あなたはビジネスと話し、彼らが姓がヌルであるすべての顧客のために何をしたいのか尋ねることができます。以下のクエリを使用して、LastNameがNullである顧客のリストを見つけることができます。
    Select * From dbo.Customer
    where LastName Is null
     ビジネスでは、LastNameを更新してNullの場所を不明にする、Last NameをNullの場合はblank('')に更新する、Last Name列をLNNP(Last Name Not Provided)に更新する、または顧客に戻って更新する名前を取得する
    提案に応じて、先に進み、[名前]列の値を更新します。空白の''に更新することにしたとしましょう。以下のクエリを使用して、
    update dbo.Customer
    set LastName=''
    where LastName is Null
    を更新できます。
     
     これで、テーブルの列をNullからNotNullに変更する準備が整いました。 
    Alter Table dbo.Customer
    Alter Column LastName VARCHAR(50) Not Null




    1. 2020年の5つの珍しいMicrosoftAccessのヒント

    2. INSERT [...] ON CONFLICTを外部キー違反に使用できますか?

    3. フォロワークラスター–SQLとNoSQLの展開を同期するための3つの主要なユースケース

    4. MariaDBでのSUBSTRING()のしくみ