webForumDet fria alternativet

Söka data mot förnamn och efternamn (MySQL SELECT)

Databaser & SQLur Databashanterare & SQL

1 svar · 1 266 visningar · startad av Forsberg

Medlem sedan juni 200454 inlägg
Frågan#1

Hej,

Har en MySQL databas med kontakter som ser ut som följande:

Kolumner:
contact_id --- int(11)
contact_name --- varchar(128)
contact_surname --- varchar(128)

Nu vill jag sätta ihop kolumnerna "contact_name" och "contact_surname" och sedan söka mot det innehållet OM efternamnet innehåller någon data. Om efternamnet INTE innehåller någon data så vill jag bara söka mot "contact_name".

OM "contact_surname" har data:
----> namn = contact_name + ' ' + contact_surname

OM "contact_surname" INTE har data:
----> namn = contact_name

Sedan vill jag kunna köra ett SQL kommando enligt:

SELECT foo FROM contacts WHERE namn LIKE 'söksträng%';

Är detta något som går att lösa med ett SQL kommando? Detta är vad jag har i dag och det fungerar inte som jag önskar:

SELECT foo FROM contacts WHERE concat(contact_name, ' ', contact_surname) LIKE '" . $searchstring . "%' OR contact_name LIKE '" . $searchstring . "%' ORDER BY contact_name ASC

Tacksam för svar! Har kört fast lite på detta!

Mvh
Forsberg

Medlem sedan juni 200032 969 inlägg
#2

På vilket sätt fungerar det inte? Är det konkateneringen med contact_surname där contact_surname är NULL? I så fall hade jag gjort så här:

 ... WHERE concat(contact_name, ' ', coalesce(contact_surname, '')) LIKE ...

mvh

130 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)