Wyszukiwanie po NIPie

0

Witajcie,

mam do zrobienia prostego selecta, wyszukanie wszystkich danych dla konkretnego numeru nip

select * from dane where nip = value;

Problem w tym, że jeden nip był wpisywany na tyle sposobów ile osób wpisujących, także ten sam nip:
123-456-78-90 może w bazie być także jako 12-34-567-890 czy 123456789 itd.

Czy jakas opcja żeby tak napisać select, żeby wyszukiwał mi po polu nip, ale pierw np. to pole czyścił z wszstkich spacji, myślników itp?

0

Tak, jest.. podstawowa operacja na ciągach znaków REPLACE(@text,'-','') tylko, że w przypadku dużej ilości rekordów może to być niewydajne bowiem indeksy nie będą działać przy takim wyszukiwaniu :)

W takich przypadkach praktyką jest wpisywanie do bazy NIPu w formie niezawierającej myślników. W twoim przypadku trzeba by było poprawić wstawianie (modyfikację) pola NIP do bazy, póżniej jednym update'em można poprawić tą kolumnę, następnie założyć indeks i będzie banglać.

0

Cześć,
Tak jest to możliwe jednak musisz wiedzieć te wszystkie "itp". Jeżeli już wiesz co chcesz usunąć(-,;," ") to będzie kilka opcji zrobienia tego, np. funkcja "replace" zagnieżdżona w funkcjach ltrim,rtrim.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1