uporządkowanie numerów kont bankowych w bazie MsSQL

0

Witajcie,

Mam bazę danych MsSQL a w niej numery bankowe wpisane w dowolny sposób. Chciałbym to uporządkować, żeby było czytelnie dla użytkownika, tj:
CC AAAA AAAA BBBB BBBB BBBB BBBB

Czy można zrobić to w jednym zapytaniu, bez poprawiania każdego rekordu? Dodam, że część rekordów to NULL

Pozdrawiam,
MMM

0

Nie wiem czy to będzie dobre podejście by robić to w jednym zapytaniu, wg mnie istnieje tam większe ryzyko wystąpienia błędu. Pobierz wszystkie numery != NULL w kodzie, przetwórz je i zapisz. Dodatkowo mógłbyś je walidować od razu (o ile nie były walidowane wcześniej). Jeśli nr konta nie jest walidowany - to zrób to jeszcze przed dodaniem numeru, jeśli przejdzie - to do bazy zapisuj juz poprawny numer.

Dodam jeszcze, że skoro to ma być zmiana wyłącznie wizualna - to może lepiej zastosować jakiś view helper i przy wyświetlaniu tylko podawać te dane inaczej?

0

można - najpierw trzeba je sprowadzić do postaci CCAAAAAAAABBBBBBBBBBBBBBBB a potem powstawiać spacje w odpowiednie miejsca. Co do pierwszego to możesz użyć https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql a do drugiego https://msdn.microsoft.com/pl-pl/library/ms187748(v=sql.110).aspx

0

Wystarczy za pomocą REPLACE wywalić zbędne znaki, a następnie SUBSTRING wyciąć fragmenty pomiędzy które należy dodać spacje. W ten sposób będziemy mieli jednakowo sformatowane numery kont.

0

zakładam, że dane są ok i nie interesują mnie w zapytaniu jakiekolwiek błędy np. w sumach kontrolnych. Chodzi o to, żeby już istniejące wpisy zamienić na CC AAAA AAAA BBBB BBBB BBBB BBBB , a już istniejące wpisy to albo ciąg bez spacji, albo spacje w złym miejscu, albo myślniki w zupełnie przypadkowych miejscach

0

Pytanie podstawowe: Czy ma 100% pewności, że wszystkie numery rachunków są w formacie NRB i pozostaje jedynie kwestia odpowiedniej wizualizacji?

0

tak, dane i ich poprawność mnie nie interesują, mam je tylko wyświetlić w sposób czytelny dla użytkownika. To czy są tam babole to już problem osoby, która je wprowadzała.

1
MMM napisał(a):

tak, dane i ich poprawność mnie nie interesują, mam je tylko wyświetlić w sposób czytelny dla użytkownika. To czy są tam babole to już problem osoby, która je wprowadzała.

Tak jak już zostało napisane powyżej, zrobisz to z pomocą REPLACE i SUBSTRING.

0
MMM napisał(a):

Chciałbym to uporządkować, żeby było czytelnie dla użytkownika

Prawdopodobnie potrzebujesz view. W bazie danych może być brzydko, a dane użytkownikowi/aplikacji możesz dać przez widok.

Lepiej w bazie danych nie ruszaj. Wtedy zawsze będziesz mógł powiedzieć: "tak wpisaliście". A jak zaczniesz mieszać, to potem będzie na ciebie.

0

muszę zmienić dane w bazie, niezależna ode mnie aplikacja je wyświetla i użytkownicy skarżą się, że mają bałagan, a chcą mieć, tak jak się w PL przyjęło zapisywać te numery

piszecie o tym replace i substring i w select jakoś to nawet wychodzi, ale jak te dane zmienić? wyświetlić potrafię,a zmodyfikować?

0

Zacznij od tego aby zmienić tylko te pola które maja 26 znaków, przynjamniej jak coś pójdzie nie tak, to nie będzie bolało, generalnie do zmiany służy UPDATE:

update
    nazwatabeli
set
    nazwakolumnyzkontem =substring(replace(nazwakolumnyzkontem,' ',''),1,2)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),3,4)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),7,4)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),11,4)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),15,4)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),19,4)
+ ' ' + substring(replace(nazwakolumnyzkontem,' ',''),23,4)
WHERE
    len(replace(isnull(nazwakolumnyzkontem,''),' ','')) = 26
0

UPDATE SET ogarnij, serwuj widok z zapytaniem, albo SELECT po stronie aplikacji.

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