Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> "Niejednoznaczny" Select
maraska
post 14.05.2020, 11:21:35
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Witam i proszę o pomoc.

Tabela może zawierać string w następujących postaciach:
1. to jest postać
2. to, jest, postać
3. tojest, postać
4. to jest, postać

5. to jest nieważna postać

Czy da się tak przekonstruować

Select * From tabela where postac Like '%to jest postać%'

żeby wynik zapytania dał wszystkie pierwsze 4 pola a pola 5 już nie?
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 11:28:21
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Czym sie rozni 5 od 1? Nie widze tu zadnej reguly ktora je odroznia i zakladam ze podane przez ciebie slowa to tylko przyklady

edit: dobra, chyba kumam
poprostu usun spacje i przecinki po obu stronach porownania i zamiast LIKE uzyj poprostu =


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 11:38:01
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 12:28:21 ) *
Czym sie rozni 5 od 1? Nie widze tu zadnej reguly ktora je odroznia i zakladam ze podane przez ciebie slowa to tylko przyklady

edit: dobra, chyba kumam
poprostu usun spacje i przecinki po obu stronach porownania i zamiast LIKE uzyj poprostu =


1 od 5 różni się tym, że w 5 występuje "nieważny" wewnątrz szukanego stringu.
Tak, to tylko przykłady.
Chodzi o to, żeby zadając do bazy zapytanie zawierające albo nie zawierające w stringu przecinki i/lub spacje, otrzymać wszystkie wyniki zawierające taki string z/bez przecinków/spacji w stringu

Może jeszcze inny przykład:
Zadaję do bazy Select * From tabela Where pole lie '%ToJestOla%'

W wyniku dostaję:
1. To Jest Ola
2. To, jest, Ola
bo takie dwa rekordy są w bazie

Czyli, czy jest funkcja Mysql, która przy Select "pominie" spacje i przecinki zapisane w polach bazy?

Ten post edytował maraska 14.05.2020, 11:48:21
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 11:46:15
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No ci przeciez napisalem. Usun te spacje i przecinki z obu stron porownania. No chyba to wiesz jak zrobic?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 11:55:14
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 12:46:15 ) *
No ci przeciez napisalem. Usun te spacje i przecinki z obu stron porownania. No chyba to wiesz jak zrobic?


1. Przecież jak dam "=" to dostanę tylko jeden rekord a nie 4 różniące się
2. Nie bez powodu są "%" bo szukany string ma być częścią stringu zapisanego w bazie
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 11:56:49
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




ad1) Jakbys usunal spacje i przecinki to by dzialalo.
ad2) Ja zalozylem ze to sa ciagi rowne a nie podciagi.

To uzywaj tego LIKE tylko usun te spacje i przecinki po obu stronach jak juz ci 3 raz z rzedu pisze...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 12:02:55
Post #7





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 12:56:49 ) *
ad1) Jakbys usunal spacje i przecinki to by dzialalo.
ad2) Ja zalozylem ze to sa ciagi rowne a nie podciagi.

To uzywaj tego LIKE tylko usun te spacje i przecinki po obu stronach jak juz ci 3 raz z rzedu pisze...


No ale ja się ciągle dopytuję właśnie o to, jak ma wyglądać Select, żeby (jak piszesz) usuwał przecinki i spacje po stronie bazy smile.gif
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 12:03:29
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Mysql ma funkcje REPLACE. Uzyj jej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 13:26:22
Post #9





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 13:03:29 ) *
Mysql ma funkcje REPLACE. Uzyj jej


Z tego co widzę, replace tak nie działa bo co z tego że każesz mu w Selekcie zrobić replace (tabela, ' ', '') jak i tak zapytanie kończysz Where tabela = 'OlaMaKota'.
To daje wynik Zero gdy zapis w bazie wygląda "Ola Ma Kota" sad.gif
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 13:48:51
Post #10





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Ale czy ja ci kaze robic REPLACE w sekcji SELECT? Masz zrobic REPLACE w sekcji WHERE..... To ze oni przyklad daja w SELECT nei znaczy ze ty bezmyslnie masz tylko stekac...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 14:08:55
Post #11





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


To może po prostu pokazałbyś takie zapytanie, gdzie szukam "AlaMaKota" żeby pokazał wszystkie poniższe rekordy:
1. Ala Ma Kota
2. Ala, Ma, Kota
3. AlaMaKota
4. Mała Ala Ma Kota Maćka
Zakładamy że w bazie są właśnie tak zapisy
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 14:11:00
Post #12





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Ale po co? Przeciz ci napisalem: uzyj REPLACE w sekcji WHERE. Jaki masz z tym problem? Skoro wiesz jak uyzc REPLACE na kolumnie w SELECT, to czemu nie mozesz uzyc REPLACE na kolumnie w sekcji WHERE? Zasada jest dokladnie taka sama.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 14.05.2020, 15:08:23
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale wy kombinujecie.

Użyć Full Text Search i problem z głowy

https://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 15:27:11
Post #14





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




REPLACE to nie zadne kombinowanie. Regula wyszukiwania jest zdefiniowana i prosta. Mieszanie takiej kobyly jak FULL search na taka pierde to jest dopiero kombinowanie wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 14.05.2020, 15:44:27
Post #15





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 15:11:00 ) *
Ale po co? Przeciz ci napisalem: uzyj REPLACE w sekcji WHERE. Jaki masz z tym problem? Skoro wiesz jak uyzc REPLACE na kolumnie w SELECT, to czemu nie mozesz uzyc REPLACE na kolumnie w sekcji WHERE? Zasada jest dokladnie taka sama.


Bo na moje wyobrażenie to co proponujesz wytnie tylko ewentualne spacje w sekcji Where i tyle. Ni jak nie pokaże tych rekordów, które wskazałem.
Ale może nie kumam jak Replace działa bo nie używałem.
Więc jak wiesz jak to zrobić z Replace, że te wszystkie rekordy wyświetli, to pokaż to zapytanie, proszę
Go to the top of the page
+Quote Post
nospor
post 14.05.2020, 16:05:55
Post #16





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




To zamiast myslec co to zrobi, poprostu to zrob jak mowie i sie przekonasz czy mowie prawde czy klame ci w zywe oczy wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 15.05.2020, 09:48:03
Post #17





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.05.2020, 17:05:55 ) *
To zamiast myslec co to zrobi, poprostu to zrob jak mowie i sie przekonasz czy mowie prawde czy klame ci w zywe oczy wink.gif


Takie coś wywala błąd obok replace... i nie wiem na czym on polega

SELECT * FROM `baza`
where`tabela` = 'AlaMaKota',
replace(`tabela`, ' ', '')
Go to the top of the page
+Quote Post
nospor
post 15.05.2020, 09:49:47
Post #18





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Jak juz mowilem, replace ma byc po obu stronach porownania a nie obok

SELECT * FROM `baza`
where replace(`tabela`, ' ', '') = 'AlaMaKota'


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maraska
post 15.05.2020, 09:58:31
Post #19





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Szacunek
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:54