Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:09 Der er 13 kommentarer

Ak. Omvendt LIKE forespørgelse

Jeg har nogle problemer med at få grejet denne. Hvordan sammensætter jeg en forespørgelse der henter de rækker med et felt som indeholder en delvis streng af en anden specefik streng?

eg.

table test (test varchar(255))

row1: dette er en test
row2: test
row3: en test
row4: noget  andet

Så hvis jeg har en streng med indholdet "en test", så vil jeg have SQL forespørgelsen skal returnere række 1 + 3, men ikke 2 eller 4.
Avatar billede kabbak Professor
27. januar 2006 - 13:20 #1
like "*en test*"
Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:29 #2
Nej den fungere ikke.

mysql> select * from test;
+------------------+
| test            |
+------------------+
| dette er en test |
| test            |
| en test          |
| noget andet      |
+------------------+
4 rows in set (0.00 sec)

mysql> select * from test where test like "*en test*";
Empty set (0.00 sec)
Avatar billede jaw Nybegynder
27. januar 2006 - 13:30 #3
LIKE '_en test_'
Avatar billede jaw Nybegynder
27. januar 2006 - 13:31 #4
Nej, der var jeg for hurtig. Sådan: LIKE '%en test%'
Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:31 #5
Hov! Jeg er vist kommet til at stille spørgsmålet forkert. Jeg mener at hvis jeg har "en test" skal den returnere række 2+3 ("test", "en test")
Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:33 #6
Hvis jeg har en lang streng, skal jeg have alle de rækker der indgår i denne streng. Ikke alle de rækker som strengen indgår i - som er hvad like "%%" returnere.
Avatar billede jaw Nybegynder
27. januar 2006 - 13:33 #7
Hvorfor så ikke "dette er en test"?
Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:37 #8
Jeg mener. Hele rækken skal indgå i strengen. "dette er en test" går ikke, for "dette er" indgår ikke i "en test".
1) "dette er en test" indgår ikke i "en test": FEJL
2) "test" indgår i "en test": OK
3) "en test" indgår i "en test": OK
4) "noget andet" indgår ikke i "en test" : FEJL
Avatar billede winston-smith Nybegynder
27. januar 2006 - 13:45 #9
Dette er hvad jeg vil have. Men det fungere ikke:
SELECT * from test WHERE "en test" like %test%;
Avatar billede kabbak Professor
27. januar 2006 - 13:57 #10
her er en fra access

SELECT tblTest.Test
FROM tblTest
WHERE (((tblTest.Test) In ('en test','test')));
Avatar billede winston-smith Nybegynder
27. januar 2006 - 14:05 #11
Sådan en har jeg prøvet noget ligende. Af en eller anden grund returnere den helt forkert:

mysql> select * from test where "en test" in (select test from test);
+------------------+
| test            |
+------------------+
| dette er en test |
| test            |
| en test          |
| noget andet      |
+------------------+
4 rows in set (0.00 sec)
Avatar billede winston-smith Nybegynder
27. januar 2006 - 14:11 #12
mysql> select * from test where test in ("en test");
+---------+
| test    |
+---------+
| en test |
+---------+
1 row in set (0.00 sec)

mysql> select * from test where %test% in ("en test");
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%test% in ("en test")' at line 1

- Den første mangler en række ("test") og den anden fejler.

Ak ak
Avatar billede winston-smith Nybegynder
27. januar 2006 - 14:54 #13
Ok. Jeg fandt endelig ud af det.

SELECT *
FROM test
WHERE 'en test' LIKE concat('%', test, '%')
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