Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Chciałem wyszukać czy dana wartość, np. 123 znajduje się w tabeli x w polu y (typ TEXT), gdzie są numery rozdzielone przecinkami.
Przykład: Kod +--------+------------+---+
| liczba | pole | | +--------+------------+---+ | 1 | 1,2,3,4,5 | 1 | | 1 | 0,2,3,6,11 | 0 | | 17 | 535,4,16,3 | 0 | | 5 | | 0 | | 5 | 5,3,1,4,55 | 1 | +--------+------------+---+ Da się to w ogóle zrobić ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Ech... jak zwykle po napisaniu posta znalazłem rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
[sql:1:2c62c05116]SELECT cos FROM tabela WHERE FIND_IN_SET(4,kolumna)[/sql:1:2c62c05116] |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%)
|
spen a gdybym chcial znalezc np liczby 4, 8 i 22 ale oddzielone np "-" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) da sie tak ?
[sql:1:83bfec396e] SELECT cos FROM tabela WHERE FIND_IN_SET(4,8,22,kolumna)[/sql:1:83bfec396e] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? a jak nie to jest jakas mozliwosc znalziania tego bez wyciahania calego rekordu i traktowania go [manual:83bfec396e]explode()[/manual:83bfec396e] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Cytat spen a gdybym chcial znalezc np liczby 4, 8 i 22 ale oddzielone np "-" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) da sie tak ?
Ta funkcja wyszukuje tylko liczbach zlączonych do całości przez przecinek. Poza tym, FIELD_IN_SET umożliwia wyszukanie na raz tylko jednej wartości, więc musiałbyś wywołać ją 3 razy złączoną poprzez OR lub AND. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%)
|
OK kapuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dzięki za odpowiedz
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Teraz mi przszło do głowy coś takiego:
powiedzmy, że masz pole 'wartosci' w tabeli, które rozpoczyna się i kończy '-', a wartości są rozdzielone przez '-' (np. tak "-1-45-345-33-324-55-35-335-86-35-0-14678-35-") to możesz użyć takiego zapytania: [sql:1:f26430be66]SELECT * FROM tabela WHERE LOCATE('-15-',wartosc)>1[/sql:1:f26430be66] czyli podajesz szukaną wartość ujętą w myślniki (np. -15-). |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%)
|
Cytat spen a gdybym chcial znalezc np liczby 4, 8 i 22 ale oddzielone np "-" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) da sie tak ?
[sql:1:ed58a31ecf] SELECT cos FROM tabela WHERE FIND_IN_SET(4,8,22,kolumna)[/sql:1:ed58a31ecf] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? a jak nie to jest jakas mozliwosc znalziania tego bez wyciahania calego rekordu i traktowania go [manual:ed58a31ecf]explode()[/manual:ed58a31ecf] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Można troche po partyzancku regexpami: [sql:1:ed58a31ecf]SELECT cos FROM tabela WHERE kolumna regexp '^[^0-9]*4[^0-9]*8[^0-9]*12[^0-9]*$'[/sql:1:ed58a31ecf] Tylko musisz założyć, że są tam same liczby i umieszczone są zawsze rosnąco. |
|
|
|
![]() ![]() |
|
Aktualny czas: 10.12.2025 - 11:17 |