Avatar billede thlund Nybegynder
18. december 2008 - 12:24 Der er 4 kommentarer og
2 løsninger

LIKE kommando - bare den anden vej rundt

velkendt

kolonne LIKE BLAH*

giver alle de poster i kolonne der begynder med BLAH

Men hvis jeg nu har følgende poster i kolonne

BLAH*
BL*
BLA*
ANDET

og jeg så vil finde dem der matcher BLAH123. Altså de tre første men ikke den sidste.

Kan I se hvad jeg mener - det er LIKE kommandoen bare den anden vej. Og det kan jeg altså ikke få til at virke og jeg gider ikke gå alle poster igennem (hvis jeg kan slippe).

Nogen ideer ?

Thomas
Avatar billede pierrehusted Nybegynder
18. december 2008 - 12:37 #1
Prøv sådan her:

SELECT *
FROM [tabelnavn]
WHERE 'BLAH123' LIKE [feltnavn]
Avatar billede teepee Nybegynder
18. december 2008 - 14:32 #2
Der må være en slags INSTR til MSSQL. Kender den kun til Oracle.
Der ville man skrive WHERE INSTR(feltnavn,'BLAH123')>0
Avatar billede teepee Nybegynder
18. december 2008 - 14:33 #3
de to parametre skal lige byttes om..
Avatar billede ldanielsen Nybegynder
21. december 2008 - 12:08 #4
Jeg er forvirret, men her er hvordan LIKE virker:

MAn bruger % eller _ som wildcards. % matcher et hvilket som helst antal tegn, også nul, så:


... WHERE kolonne LIKE 'BL%' ...
- giver dem der starter med 'BL', efterfulgt af intet eller noget


... WHERE kolonne LIKE 'BL_' ...
- giver dem der er lig 'BL' og præcis et tegn mere

... WHERE kolonne LIKE '%BL%' ...
- giver dem der indeholder 'BL'

... WHERE kolonne LIKE '_%@_%._%'
- giver et nogenlunde check for om det er en emailadresse.

Desuden er der mulighed for NOT LIKE, hvis du vil det. Om du siger 'BL%' LIKE kolonner eller kolonne LIKE 'BL%', det er præcis det samme.

Det jeg ikke forstår er at " ... kolonne LIKE BLAH* ... " vil fejle med et brag, medmindre du har en kolonne der hedder BLAH*. * er ikke et wildcard i MSSQL. Jeg forstå heller ikke at det du ønsker skulle være det omvendte af dette.
Avatar billede ldanielsen Nybegynder
21. december 2008 - 12:10 #5
Glemte at sige at _ matcher præcis et tegn, så LIKE '____' vil give alle der indeholder præcis 4 tegn ...
Avatar billede madeindk Nybegynder
05. januar 2009 - 15:56 #6
Ja, en INSTR funktion eksisterer skam også i MS SQL ;-)

Du siger bare:
SELECT felt1, felt2, felt3 FROM dintabel WHERE charindex('søgefterhvad...', feltnavn) > 0
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