Handling NULL Values
NULL qiymatlarni boshqarish
Ma'lumotlar bazasida ustun qiymati bo'lmasligi (NULL) mumkin. Go'ning oddiy string/int turlari NULLni ifodalay olmaydi — buning uchun sql.NullString, sql.NullInt64 kabi maxsus turlar bor.
var name string
var email sql.NullString
err := db.QueryRow("SELECT name, email FROM users WHERE id = ?", int64(2)).Scan(&name, &email)
if err != nil {
fmt.Println("xato:", err)
return
}
if email.Valid {
fmt.Println(name, email.String)
} else {
fmt.Println(name, "email ko'rsatilmagan")
}sql.NullString — ikkita maydonli struct: String (qiymat) va Valid (bu qiymat NULL emasmi). Agar ustun bazada NULL bo'lsa, Valid — false bo'ladi va Stringga ishonib bo'lmaydi. Agar oddiy stringga to'g'ridan-to'g'ri Scan qilishga urinsangiz-u, qiymat NULL bo'lsa — dastur xato qaytaradi, shuning uchun NULL bo'lishi mumkin bo'lgan ustunlar uchun har doim sql.NullXxx turlaridan foydalaning.
>_ Exercise
NULL bo'lishi mumkin bo'lgan email ustunini xavfsiz o'qing.
- •id=2 uchun name va email (sql.NullString) ni QueryRow bilan oling
- •email.Valid bo'yicha mos xabarni chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
NULL bo'lishi mumkin bo'lgan ustunlarni sql.NullString kabi turlarga Scan qiling — ular Valid maydoni orqali qiymat mavjudligini xavfsiz tekshirish imkonini beradi.
NEXT UP
Transactions
$ go run main.go
Kodingizni ishga tushiring