Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne
Forum PHP.pl > Forum > Bazy danych > MySQL
kilofmar
Witam
Czy da się za pomocą wyrażenia regularnego wyświetlić rekord w którym nie wystąpiło szukane wyrażenie.
Chodzi mi o to że gdy nie ma szukanego ID w polu to wyświetl ten rekord.

Np. Mam tabele i w niej pole "status" i tam sa ID "12,23,232,123,33" a moje ID jest np. 100 i nie występuje w tym polu więc chciałbym wyświetlić ten rekord

Bo aby wyświetlić rekord gdy występuje ID to robię to tak:

  1. <?php
  2. $query2 = sprintf("SELECT *  FROM `sklep`
  3.                       WHERE `stsud` REGEXP '(,%s,|^%s,|,%s$|^%s$)' LIMIT 0,1",
  4.                      $dane['id'], $dane['id'], $dane['id'], $dane['id']);
  5. ?>


Ale jak to odwrócić?
fragles
Jeśli to jest tekst i jeśli po każdym ID występuje przecinek to wystarczy użyć LIKE, negacji i warunku np '%100,%'

SELECT x FROM y WHERE ID NOT LIKE ('%id,%');

poza tym czy nie lepiej, wygodniej szybciej by było zrobić tabelę na ID - zrobić klucz i zamiast grzebać w tekście zrobić złączenia?
alegorn
nie do konca jestem pewny czy dobrze rozumiem co masz w tych polach...
ale ja raczej bym polecil
  1. SELECT * FROM `sklep` WHERE id NOT IN ( 12,23,232,123,33) /* not in `stsud`questionmark.gif*/


choc jak pisalem, nie jestem pewny czy dobrze zrozumialem jak i co maszz w tych tabelach...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.