Avatar billede gummisko Nybegynder
04. juli 2005 - 12:47 Der er 24 kommentarer og
1 løsning

Søgning i database med asp

Hej
Jeg skal have lavet et sql-kald til at søge i en database med en del kolonner.
Jeg kender fremgangsmåden på denne facon:
strSQL = strSQL & "  ((titel LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (forfatter_efternavn LIKE '%" & strKeyword & "%')"

MEN: er der ikke en metode, hvor man ikke skal remse alle kolonnerne op - altså oversat: søg efter dette ord i alle kolonner???????
MVH
Bjarne
Avatar billede arne_v Ekspert
04. juli 2005 - 13:29 #1
næppe !

hvordan ville du håndtere forskellige data typer ?
Avatar billede ldanielsen Nybegynder
05. juli 2005 - 12:58 #2
Du kunne vælge at sige:

strSQL = "SELECT * FROM table WHERE titel + beskrivelse + forfatter_efternavn LIKE '%" & strKeyword & "%'"
Avatar billede arne_v Ekspert
05. juli 2005 - 13:06 #3
det gør SQL sætningen lidt kortere men kan også give lidt side effects

f1 f2
ab cd

WHERE f1+f2 LIKE '%bc%'
Avatar billede ldanielsen Nybegynder
05. juli 2005 - 13:10 #4
Præcis

Man skal ikke lave koden kortere og mere overskuelig af bekvemmelighed. Man skal udelukkende strukturere sin kode udfra hvad der virker bedst
Avatar billede gummisko Nybegynder
05. juli 2005 - 13:20 #5
okay - det er så i orden
Vil I begge smide et svar så I kan dele points.
Kunne man få Jer 2 guruer til at forklare mig en lille ting:
Jeg har i en kolonne kaldet billeder (med tekst) i nogle af posterne indskrevet navnet på et billede fx majs.jpg.
Når jeg angiver værdien af rs.billede i en repeat region kommer alle værdier frem, men der hvor værdien er null skal jeg have vist noget andet vha. if rs.billede = null then vis-noget-andet. MEN hvad er værdien af null? er det "" eller er "null" eller hva??
TAK
Avatar billede arne_v Ekspert
05. juli 2005 - 13:24 #6
Det kan sikkert løses både i SQL:

SELECT ...,IFNULL(felt,"ikke noget"),... FROM ... WHERE ...

eller i din applikation (bruger du ASP.NET med C# ?)
Avatar billede arne_v Ekspert
05. juli 2005 - 13:25 #7
og et svar
Avatar billede arne_v Ekspert
05. juli 2005 - 13:26 #8
jeg er en stor tilhænger af så simpel kode som muligt

men simplificeringer skal helst ikke introducere side effects
Avatar billede gummisko Nybegynder
05. juli 2005 - 13:39 #9
IFNULL(felt,"ikke noget")
betyder det at null bliver lavet om til en tekststreng "ikke noget"??

husk at smide et svar
Avatar billede arne_v Ekspert
05. juli 2005 - 13:41 #10
sorry det er NULLIF og ikke IFNULL
Avatar billede arne_v Ekspert
05. juli 2005 - 13:41 #11
Syntax
NULLIF ( expression , expression )

Arguments
expression

Is a constant, column name, function, subquery, or any combination of arithmetic, bitwise, and string operators.

Return Types
Returns the same type as the first expression.

NULLIF returns the first expression if the two expressions are not equivalent. If the expressions are equivalent, NULLIF returns a null value of the type of the first expression.
Avatar billede arne_v Ekspert
05. juli 2005 - 13:42 #12
forkert igen

ISNULL(felt,"ikke noget")
Avatar billede arne_v Ekspert
05. juli 2005 - 13:42 #13
Syntax
ISNULL ( check_expression , replacement_value )

Arguments
check_expression

Is the expression to be checked for NULL. check_expression can be of any type.

replacement_value

Is the expression to be returned if check_expression is NULL. replacement_value must have the same type as check_expresssion.

Return Types
Returns the same type as check_expression.

Remarks
The value of check_expression is returned if it is not NULL; otherwise, replacement_value is returned.
Avatar billede arne_v Ekspert
05. juli 2005 - 14:10 #14
skulle ldanielsen ikke også have haft ?
Avatar billede arne_v Ekspert
05. juli 2005 - 14:11 #15
(og det er i MySQL at funktionen hedder IFNULL)
Avatar billede gummisko Nybegynder
05. juli 2005 - 14:12 #16
Kunne du lige smide det ind i denne

"SELECT *  FROM indhold, underkategorier  WHERE indhold.kategori <> 7 AND indhold.underkategori = underkategorier.id  ORDER BY dato desc"

Kolonnen hedder billeder i tabellen indhold
Avatar billede gummisko Nybegynder
05. juli 2005 - 14:13 #17
det er på en asp-side til en acces-db
Avatar billede gummisko Nybegynder
05. juli 2005 - 14:14 #18
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Avatar billede arne_v Ekspert
05. juli 2005 - 14:22 #19
"SELECT bla,bla,ISNULL(billeder,'Intet billede')  FROM indhold, underkategorier  WHERE indhold.kategori <> 7 AND indhold.underkategori = underkategorier.id  ORDER BY dato desc"
Avatar billede gummisko Nybegynder
05. juli 2005 - 14:24 #20
tak - you are a gutterman.....
Avatar billede gummisko Nybegynder
05. juli 2005 - 14:31 #21
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i FROM-delsætningen.

hmmmmmmmmm......

Recordset1.Source = "SELECT *  FROM indhold, underkategorier,ISNULL(billeder,'no')  WHERE indhold.kategori <> 7 AND indhold.underkategori = underkategorier.id  ORDER BY dato desc"

er det ikke korrekt??? åbenbart ikke, men hvor er fejlen så?? beom
Avatar billede arne_v Ekspert
05. juli 2005 - 15:15 #22
ODBC Microsoft Access-driver ????

Er det ikke MS SQLServer vi snakker om ?
Avatar billede arne_v Ekspert
05. juli 2005 - 15:17 #23
I access er det nok:

IIF(ISNULL(billeder),'no',billeder)
Avatar billede arne_v Ekspert
05. juli 2005 - 15:18 #24
(den her kategori er for SQLServer - der er en ande til Access)
Avatar billede gummisko Nybegynder
05. juli 2005 - 15:27 #25
sorry
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