Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL, MySQL] Porównywanie numeru NIP
Forum PHP.pl > Forum > Bazy danych > MySQL
arpi
Witam, możliwe, że mam dość proste zapytanie, ale sam niestety nie potrafię tego zrobić.
Opiszę krok po kroku.
Użytkownik (firma) składa zamówienie w sklepie www podając NIP.
Podczas importu zamówienia do bazy SQL sprawdzam czy dana firma istnieje w bazie..
- jeśli tak dodaję zamówienie dla istniejącej firmy,
- jeśli nie - dodaję kontrahenta a następnie zamówienie

Jak wiadomo jedni podają nip z kreskami inni bez.
Napisałem skrypt, który działa prawidłowo jednak wydaje mi się że jest zbyt czasochłonny.
Otóż
1.usuwam w PHP kreski z NIPu,
2.robię pętlę po bazie SQL, przy każdym obrocie usuwam kreski z nipu (jeśli występują) i porównuję NIPy.
3.odpowiedni skrypt w zalęzności czy znajdzie kontrahenta z danym NIPem czy nie.

Czy istnieje metoda w SQL, która porównałaby NIP bez kresek z NIPem w bazie SQL (w bazie SQL istnieję NIPy z kreskami i bez kresek)
Czyli np coś takiego:

SELECT SymbolKontrahenta FROM Kontrahenci WHERE NipKontrahenta == NIPbezKresek;

Czy zmienna NipKontrahenta da się jakoś obłożyć wyrażeniem regularnym aby w locie usuwało kreski jeśli występują ?
Będę bardzo wdzięczny za pomoc gdyż na wyrażeniach regularnych absolutnie się nie znam sad.gif

Kshyhoo
No to chcesz poradę SQL a piszesz w PHP? Przenoszę.

Podmiana fragmentu tekstu w rekordzie bazy MySQL
phpion
@Kshyhoo:
Sprawdzaj proszę linki zanim je podasz - wywala forbidden.

@arpi:
Możesz wyszukać firmę jednym zapytaniem:
  1. SELECT
  2. *
  3. FROM
  4. firmy
  5. WHERE
  6. REPLACE(nip, '-', '') = XXX
  7. ;

gdzie XXX to Twój NIP w skrypcie PHP (po usunięciu kresek). Powyższe zapytanie usuwa kreski z wartości w kolumnie nip. Jeśli chciałbyś usunąć dodatkowe znaki (np. i kreski i spacje) musisz powielić REPLACE:
  1. REPLACE(REPLACE(nip, ' ', ''), '-', '') = XXX
mar1aczi
Przy okazji "tego zamieszania" przemyśl czy nie warto zadbać aby numery nip w bazie były trzymane w spójny sposób, a nie tak jak kto chce (wprowadzi).
Kshyhoo
Cytat(phpion @ 5.02.2014, 09:15:57 ) *
@Kshyhoo:
Sprawdzaj proszę linki zanim je podasz - wywala forbidden.

A mnie się otwiera!
arpi
Dziękuję za odpowiedzi - nie pomyślałem że w SQL istnieje taka funkcja jak REPLACE.
Rozwiązanie okazało się prostsze niż by się wydawało smile.gif

Odpowiedzi na pytania niektórych userów:
Pytanie dotyczyło SQL dlatego tak zatytułowałem... to że ja miałem rozwiązanie w PHP czy C# to tylko podałem, aby nakreślić mój obecny skrypt.
Co do ujednolicenia numerów NIP to akurat przejąłem obsługę sklepu internetowego i integracji z programem sprzedażowym. Program w firmie działa od 10 lat i ma dużą bazę kontrahentów, sklep www działa od 2 lat dlatego takie rozwiązanie jest niezbędne...
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.