webForumDet fria alternativet

<> '' och is not null fungerar ej

Databaser & SQL

10 svar · 361 visningar · startad av leniz

Medlem sedan aug. 2001676 inlägg
Frågan#1

Hej!

Jag har en ganska lång sql sats med flera fält där jag tagit inner join. Koden är rätt förutom att när jag lägger till en kontroll att jag vill att ett fält ska innehålla något så fungerar det inte.

Om jag skriver:

where t.faltnamn <> ''
så visas INGET
(det är alltså två fnuttar ' bredvid varandra och inte ett " tecken)

Om jag skriver:

where t.faltnamn is not null
så visas ALLT, d.v.s. även de vars fält är tomt.

Finns det något tredje sätt att skriva detta på som kan fungera?

Har mysql databas.

Mvh Lena :)

Medlem sedan aug. 2002733 inlägg
#2

Borde fungera.

SELECT * FROM [tabell] WHERE falt <> ''
Medlem sedan dec. 200012 464 inlägg
#3

Flyttas från ASP

Medlem sedan dec. 20003 887 inlägg
#4

Jag tycker förvisso asps förslag ska fungera, men här är en variant till

SELECT *
FROM [i]tabell[/i]
WHERE CHAR_LENGTH([i]fält[/i]) > 0
Medlem sedan aug. 2001676 inlägg
#5

Tack för era svar. Har nu upptäckt en sak som istället får mig att tro att det är rs.eof som inte fungerar riktigt som det ska.

Det är nämligen så här. Att om det finns två eller fler poster som motsvarar sökvillkoren så skrivs de ut när jag har where t.faltnamn <> ''. Om jag däremot bara har 1 post som motsvarar sökvillkoren så skrivs det inte ut, utan då skrivs istället meddelandet nedan om "Leider kein anzeige..." ut.

Det är här (gissar jag) som det hela blir fel:

if rs.eof then
Response.Write("<table width='100%'><tr><td width='100%'><center><font face='tahoma,arial' color='990000' size='2'><b>Leider kein anzeige angepasst die suche.</b></font></td></tr></table>")
else
här skrivs det hela ut

Himla konstigt detta tycker jag.

Sökte här på webforum och hittade ett inlägg som gjorde att jag testade detta istället för rs.eof

if isNull(rs(0)) then

men då fick jag följande felmeddelande istället:

Data provider or other service returned an E_FAIL status.

Hade problem att få like i satsen att fungera också med min nya mysql databas. Men då tog jag bort lite mellanslag kring % tecknen och då fungerade det fint.

Mvh Lena

Medlem sedan aug. 2001676 inlägg
#6

Ingen som vet eller orkar svara?

Jag undrar alltså varför det inte visas någon träff om det bara finns 1 träff, medan träffar visas om det finns 2 eller fler när jag har if rs.eof.

Mvh Lena

Medlem sedan aug. 2001676 inlägg
#7

Kan det ha något med min sidindelningsfunktion att göra, att t.ex. det här kan störa på något vis?

Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.CursorType = 3
rs.ActiveConnection = stugdatabas
rs.Open sql

if rs.EOF then....
Medlem sedan maj 200010 687 inlägg
#8

Engine^ skrev:

Jag tycker förvisso asps förslag ska fungera, men här är en variant till

SELECT *
FROM [i]tabell[/i]
WHERE CHAR_LENGTH([i]fält[/i]) > 0

Fungerar inte för alla databaser.

Medlem sedan dec. 20003 887 inlägg
#9

Erik Juhlin skrev:

Engine^ skrev:

Jag tycker förvisso asps förslag ska fungera, men här är en variant till

SELECT *
FROM [i]tabell[/i]
WHERE CHAR_LENGTH([i]fält[/i]) > 0

Fungerar inte för alla databaser.

Nix, men det var ju MySQL det var frågan om.

Medlem sedan dec. 200012 464 inlägg
#10

Det borde fungera i alla DBMS eftersom char_length är en standardfunktion.

Medlem sedan maj 200010 687 inlägg
#11

Fungerar i alla fall inte i SQL Server 7 och SQL Server 2000.

Engine^ skrev:

Nix, men det var ju MySQL det var frågan om.

Sorry, missade det... :)

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)