Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zmienić kolumnę z wartości Null na Not Null w tabeli SQL Server — samouczek SQL Server / T-SQL, część 52

Scenariusz:

Pracujesz jako programista SQL Server w banku. Mają tabelę Dbo.Customer w bazie danych TechBrothersIT z poniższą definicją.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Jak zauważyłeś, LastName może być Null. To jest problem. Firma zauważyła, że ​​później i zawsze chce mieć wartość dla LastName. Zostaniesz poproszony o wykonanie analizy i napisanie skryptu Alter, aby zmienić kolumnę z wartości Null na Not Null. Jakie rzeczy rozważysz lub jakie sugestie przedstawisz?

Rozwiązanie:

Pierwszą rzeczą do rozważenia w tym scenariuszu jest sprawdzenie, czy jakiekolwiek wartości są już wstawione do tabeli dla Last Name jako Null. Jeśli tak jest, nie możesz tak naprawdę iść dalej i zmienić kolumnę z Null na Not Null. Jeśli spróbujesz, zobaczysz błąd poniżej.
Msg 515, Level 16, State 2, Line 14Nie można wstawić wartości NULL do kolumny „LastName”, tabeli „TechBrothersIT.dbo.Customer”; kolumna nie zezwala na wartości null. UPDATE kończy się niepowodzeniem.
Oznacza to, że najpierw musimy zająć się wartościami Null w tej kolumnie. Możesz porozmawiać z biznesem i zapytać, co chcieliby zrobić dla wszystkich klientów, których nazwisko jest puste. Listę klientów, dla których nazwisko ma wartość Null, można znaleźć, korzystając z poniższego zapytania.
Select * From dbo.Customer
where LastName Is null
 Firma może dostarczać różne sugestie, takie jak Zaktualizujmy nazwisko, aby nie wiedzieć, gdzie jest puste lub zaktualizuj nazwisko, aby było puste (''), jeśli jest puste lub zaktualizuj kolumnę Nazwisko do LNNP (nazwisko nie zostało podane) lub wracają do klientów i uzyskać ich nazwisko do aktualizacji 
W zależności od sugestii zaktualizuj wartości w kolumnie Nazwisko. Załóżmy, że zdecydowaliśmy się zaktualizować do pustego „”, możemy użyć poniższego zapytania, aby zaktualizować
update dbo.Customer
set LastName=''
where LastName is Null
 
 Teraz możesz zmienić kolumnę w tabeli z Null na Not Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykłady konwersji „data” na „datetime2” w SQL Server (T-SQL)

  2. Zaktualizuj wiersz

  3. Nie używaj sys.sql_dependencies w SQL Server (jest przestarzały)

  4. Jak szybko napisać Select Query w SQL Server — SQL Server / TSQL Tutorial, część 108

  5. Jak zaktualizować dwie tabele w jednej instrukcji w SQL Server 2005?