Avatar billede metric Nybegynder
08. januar 2003 - 00:24 Der er 9 kommentarer

MySQL og NULL-værdier

Hej,

Jeg er ny på MySQL-området da jeg ellers arbejder med MSSQL. Mit problem drejer sig om NULL-værdier i et felt af typen Text. Jeg bruger MySQL 4.0 Standard, MyODBC 2.50 og ASP på en Windows 2000 Server.

Hvis jeg laver en
--
strQuery = "UPDATE Articles SET Content='' WHERE ID=1"
objConn.Execute strQuery
--

Og derefter trækker Content-feltet ud igen med
--
strQuery = "SELECT Content FROM Articles WHERE ID=1"
Set rsArticle = objConn.Execute(strQuery)
Response.Write IsNull(rsArticle("Content"))
--

Så er IsNull() True - hvordan kan det være? Den burde være False da jeg ikke har sat feltet til Null, men til ''.

Jeg håber nogen kan hjælpe.

Bedste hilsner
Lasse
Avatar billede jinxit Nybegynder
08. januar 2003 - 00:54 #1
I mange "sprog" er den tomme streng ækvivalent med null-værdien
Avatar billede metric Nybegynder
08. januar 2003 - 01:29 #2
Det er muligt, men der er forskel på '' og Null
Avatar billede niceday Nybegynder
08. januar 2003 - 02:28 #3
Ja, der er forskel på '' og Null.

Prøv at sætte et mellemrum mellem 'erne.

Ellers prøv dette:

streng = " "

strQuery = "UPDATE Articles SET Content='" & streng & "' WHERE ID=1"
Avatar billede metric Nybegynder
08. januar 2003 - 03:02 #4
Tak, men " " er ikke det samme som "" - jeg ved godt der er forskellige løsninger, men det er mere et principspørgsmål.
Avatar billede disky Nybegynder
08. januar 2003 - 07:13 #5
jinxit, '' er IKKE det samme som null.

null specificerer at der ikke at instantieret noget, '' viser at der er instantieret noget men at strengen er tom.
Avatar billede eagleeye Praktikant
08. januar 2003 - 09:11 #6
Det er fordi via et connection/recordset bliver tomme kolonner sat til Null også selvom man indætter '' i kolonnen.

Jeg er lidt i tvivl om der er ADODB eller databasen som gør det men det sker. Jeg har engang lavet to SQL sætninger efter hinanden, hvor jeg indsatte en string via SQL som var tom '', men når jeg hentede den ud med et recordset var kolonnen = Null.


Hvis du i ASP sætter "" fåran eller bagved så får du en tom string og ikke Null:

var = "" & rs("content")    'Så bliver var tom og ikke Null
Avatar billede disky Nybegynder
08. januar 2003 - 09:39 #7
Det er så vidt jeg ved ikke databasen som gør det.

Jeg kan ikke lige teste det men jeg mener MySQL gør hvad man beder den om.
Avatar billede morw Nybegynder
08. januar 2003 - 10:16 #8
disky> Right, MySQL kan godt kende forskel på "" og null. En indsat tom streng bliver ikke til null i MySQL.

Det må være ADODB der fucker. Hvad andet kan man forvente når man bruger et M$ produkt.
Avatar billede metric Nybegynder
08. januar 2003 - 12:05 #9
Morw, jeg synes ikke vi skal gå ind i en diskussion om forskellige softwareproducenter. Jeg er fuldt ud tilfreds med Microsoft og ikke mindst MSSQL - jeg ønsker blot et alternativ til Microsoft Access til mindre sites.

Mht forskellen mellem "" og Null, så virkede det fint med MyODBC 3.51, men her var nogle fejl som gjorde at jeg var nødt til at skifte til MyODBC 2.50. Så det skyldes sikkert noget i MyODBC 2.50.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester