---
title: "Obligatorisk sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/112198-obligatorisk-sträng"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Compusa"
published: "2004-09-23T15:21:36.000Z"
updated: "2004-09-23T19:15:12.000Z"
replies: 7
views: 238
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/112198-obligatorisk-sträng"
---

# Obligatorisk sträng

## #1 — Compusa, 2004-09-23T15:21Z

```
CREATE TABLE KUND(
  kundID MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
  kundFornamn CHAR(50) NOT NULL,
  kundEfternamn CHAR(50) NOT NULL,
  kundGatuadress CHAR(50),
  kundPostnr CHAR(30),
  kundStad CHAR(50),
  kundLand CHAR(50) DEFAULT "Sverige",
  kundTfn CHAR(50),
  UNIQUE (kundFornamn, kundEfternamn, kundGatuadress, kundPostnr, kundStad, kundLand, kundTfn)
) TYPE INNODB;
```

Jag vill att man inte skall få lämna strängen kundFornamn och kundEfternamn tom. Är det NOT NULL som gäller då med, eller gäller detta bara på tal. Hur skulle det kunna se ut?

Permalänk: https://www.webforum.nu/p/112198

## #2 — Compusa, 2004-09-23T16:10Z

Även om jag inte lägger till någon data i kunFornamn och kundEfternamn så godkänns inserten. Varför? NOT NULL är väl att den måste ha ett värde? Hur skall jag gå tillväga?

Permalänk: https://www.webforum.nu/p/1444017

## #3 — LarsG, 2004-09-23T17:26Z

Det går inte att få Mysql att förbjuda en tom sträng som värde. Det får du kontrollera själv.

Permalänk: https://www.webforum.nu/p/1444057

## #4 — Compusa, 2004-09-23T19:02Z

Med andra ord så går det bara att hindra tom värden i tex INT?

Permalänk: https://www.webforum.nu/p/1444121

## #5 — @nders, 2004-09-23T19:03Z

Nej, men du får skilja på tom sträng och null.
Du tror väl inte att du är förhindrad att lagra 0 i ett talfält för att du satt det inte null ska tillåtas?

Permalänk: https://www.webforum.nu/p/1444122

## #6 — LarsG, 2004-09-23T19:07Z

Nej. Om du har definierat en character column (c) som not null och utan default så ska följande två sql-satser ge fel

```
insert into t(a,b,d,e) values(1,2,4,5)
```

```
insert into t(a,b,c,d,e) values(1,2,null,4,5)
```

Följande

```
insert into t(a,b,c,d,e) values(1,2,'',4,5)
```

ger inte fel.

Permalänk: https://www.webforum.nu/p/1444126

## #7 — Compusa, 2004-09-23T19:13Z

> **@nders skrev:**
>
> Nej, men du får skilja på tom sträng och null.
> Du tror väl inte att du är förhindrad att lagra 0 i ett talfält för att du satt det inte null ska tillåtas?

Nej det tror jag inte, not null innebär väl att den inte får lämnas utan värde och 0 är ett giltigt tal.

> **LarsG skrev:**
>
> Nej. Om du har definierat en character column (c) som not null och utan default så ska följande två sql-satser ge fel
> 
>
>
> ```
> insert into t(a,b,d,e) values(1,2,4,5)
> ```
>
> 
> 
>
>
> ```
> insert into t(a,b,c,d,e) values(1,2,null,4,5)
> ```
>
> 
> 
> Följande
> 
>
>
> ```
> insert into t(a,b,c,d,e) values(1,2,'',4,5)
> ```
>
> 
> 
> ger inte fel.

Okej nu börjar det klarna lite, not null verkar vara lite lömsk...

Permalänk: https://www.webforum.nu/p/1444129

## #8 — @nders, 2004-09-23T19:15Z

> Nej det tror jag inte, not null innebär väl att den inte får lämnas utan värde och 0 är ett giltigt tal.

Precis, och tom sträng ('') är en jättejättegiltig sträng.

Permalänk: https://www.webforum.nu/p/1444130

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/112198-obligatorisk-sträng
