Nur ganze Wörter finden?

Nur ganze Wörter finden?

am 14.04.2008 18:27:14 von Martin Schneider

Hallo, zusammen,

ich suche eine SQL-Abfrage, die folgendes kann: Man sucht das Wort "und"
in einem String. Es sollen gefunden werden:

"Stefan und Tanja gehen Spazieren"
"Und sie lebten glücklich bis an ihr Lebensende"

aber nicht:

"Tanjas Hund hatte Flöhe"
"Stefan musste zum Bund"

Danke für Eure Tipps :-)

Viele Grüße,
Martin

Re: Nur ganze Wörterfinden?

am 14.04.2008 18:32:28 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Nur ganze Wörter finden?

am 14.04.2008 20:56:41 von Claus Reibenstein

Martin Schneider schrieb:

> ich suche eine SQL-Abfrage, die folgendes kann: Man sucht das Wort "und"
> in einem String. Es sollen gefunden werden:
>
> "Stefan und Tanja gehen Spazieren"
> "Und sie lebten glücklich bis an ihr Lebensende"
>
> aber nicht:
>
> "Tanjas Hund hatte Flöhe"
> "Stefan musste zum Bund"

... WHERE spalte LIKE '% und %'
OR spalte LIKE '% und'
OR spalte LIKE 'und %'
OR spalte = 'und'

Mit regulären Ausdrücken und RLIKE geht es sicher noch eleganter, aber
damit habe ich mich noch nicht besonders intensiv befasst :-)

Gruß. Claus

Re: Nur ganze Wörter finden?

am 14.04.2008 21:55:24 von Martin Schneider

Andreas Kretschmer schrieb:

[begin-end-kindergarten gesnippt]
> Reguläre Ausdrücke. Die findest auch Du.

Macht Access leider nicht...

Trotzdem Danke.

Viele Grüße,
Martin

Re: Nur ganze Wörter finden?

am 14.04.2008 22:56:01 von Claus Reibenstein

Martin Schneider schrieb:

> Andreas Kretschmer schrieb:
>
> [begin-end-kindergarten gesnippt]

Jaja, unser Andreas ...

>> Reguläre Ausdrücke. Die findest auch Du.
>
> Macht Access leider nicht...

Von Access hattest Du nirgends etwas geschrieben. Außerdem ist dies hier
eine MySQL-Gruppe.

Gruß. Claus

Re: Nur ganze Wörter finden?

am 15.04.2008 09:02:36 von Harald Stowasser

Martin Schneider schrieb:
> Hallo, zusammen,
>
> ich suche eine SQL-Abfrage, die folgendes kann: Man sucht das Wort "und"
> in einem String. Es sollen gefunden werden:
>
> "Stefan und Tanja gehen Spazieren"
> "Und sie lebten glücklich bis an ihr Lebensende"
>
> aber nicht:
>
> "Tanjas Hund hatte Flöhe"
> "Stefan musste zum Bund"

select * from foo where CONCAT(' ',spalte,' ') like ' und '

Re: Nur ganze Wörterfinden?

am 15.04.2008 09:30:16 von Frank Arthur

> Martin Schneider schrieb:
>> ich suche eine SQL-Abfrage, die folgendes kann: Man sucht das Wort
>> "und" in einem String. Es sollen gefunden werden:
>>
>> "Stefan und Tanja gehen Spazieren"
>> "Und sie lebten glücklich bis an ihr Lebensende"
>>
>> aber nicht:
>>
>> "Tanjas Hund hatte Flöhe"
>> "Stefan musste zum Bund"
>
Harald Stowasser schrieb:
> select * from foo where CONCAT(' ',spalte,' ') like ' und '

Fast.
select * from foo where CONCAT(' ',spalte,' ') like '% und %'

Re: Nur ganze Wörter finden?

am 15.04.2008 10:32:10 von Martin Schneider

Claus Reibenstein schrieb:
> Von Access hattest Du nirgends etwas geschrieben. Außerdem ist dies hier
> eine MySQL-Gruppe.

Da hast Du Recht :-) Da es keine reine SQL-Sprachengruppe gibt, fühlte
ich mich hier am besten aufgehoben. Ich wußte bis dahin nicht, dass die
SQL-Implementationen unterschiedlichen Funktionsumfang haben.

Gruß,
Martin

Re: Nur ganze Wörter finden?

am 15.04.2008 10:33:04 von Martin Schneider

Frank Arthur schrieb:
> select * from foo where CONCAT(' ',spalte,' ') like '% und %'

Ah, das ist eine gute Idee!

Danke!

Gruß,
Martin

Re: Nur ganze Wörterfinden?

am 15.04.2008 10:51:46 von Harald Wenninger

* Martin Schneider tat kund und zu wissen:

> Claus Reibenstein schrieb:
>> Von Access hattest Du nirgends etwas geschrieben. Außerdem ist dies hier
>> eine MySQL-Gruppe.

> Da hast Du Recht :-) Da es keine reine SQL-Sprachengruppe gibt, fühlte
> ich mich hier am besten aufgehoben.

Doch, gibt es direkt nebenan: de.comp.datenbanken.misc
Sprachengruppe zwar nicht, aber eine wirklich reine SQL-Gruppe ist ein
wenig arg theoretisch, weil es afaik kein einziges Datenbanksystem gibt,
das den aktuellen SQL-Standard komplett implementiert.

Gruß,
Harald

--
Klingon function calls do not have 'parameters' -
they have 'arguments' - and they ALWAYS WIN THEM.

Re: Nur ganze Wörter finden?

am 15.04.2008 14:14:41 von Steffen Mosthaf

Claus Reibenstein schrieb:
> Martin Schneider schrieb:
>
>> ich suche eine SQL-Abfrage, die folgendes kann: Man sucht das Wort "und"
>> in einem String. Es sollen gefunden werden:
>>
>> "Stefan und Tanja gehen Spazieren"
>> "Und sie lebten glücklich bis an ihr Lebensende"
>>
>> aber nicht:
>>
>> "Tanjas Hund hatte Flöhe"
>> "Stefan musste zum Bund"
>
> ... WHERE spalte LIKE '% und %'
> OR spalte LIKE '% und'
> OR spalte LIKE 'und %'
> OR spalte = 'und'
>
> Mit regulären Ausdrücken und RLIKE geht es sicher noch eleganter, aber
> damit habe ich mich noch nicht besonders intensiv befasst :-)
>
> Gruß. Claus

So ist es dann doch etwas kürzer:

....
WHERE spalte REGEXP '.* und .*'

Gruß
Steffen

Re: Nur ganze Wörter finden?

am 16.04.2008 13:42:46 von Stefan Dreyer

Steffen Mosthaf wrote:

>
>
> So ist es dann doch etwas kürzer:
>
> ...
> WHERE spalte REGEXP '.* und .*'

Aber findet und am Anfang oder am Ende nicht.