Potrzebuję konwertować dane z arkusza kalkulacyjnego do instrukcji insert w SQL. Opracowałem większość wyrażeń regularnych do używania narzędzia znajdowania i zamiany w systemie SSMS, ale napotykam problem, próbując odwołać się do dziewiątego elementu z nawiasami w moim ostatnim miejscu.Limit grupy przechwytywania-wyrażeń regularnych wyrażeń regularnych SQL?
Oto oryginalne nagranie:
Blue Doe 12/21/1967 1126 Queens Highway Torrance CA 90802 N 1/1/2012
I to jest to, czego potrzebuję (na razie):
select 'Blue','Doe','19671221','1126 Queens Highway','Torrance','CA','90802','N','20120101'
Ze względu na ograniczenia dotyczące liczby w nawiasach przedmiotów dozwolonych muszę uruchomić poprzez Wymień trzy razy. Może to działać w procedurze przechowywanej, jeśli mogę najpierw zrobić to działa jako POC.
To pierwszy wyrażenie dopasowywania:
^{:w:b:w:b}{:z}/{:z}/{:z:b[0-9A-Za-z:b]+:b:w:b[A-Z]+:b:z:b:w:b}{:z}/{:z}/{:z}
I wymienić: \10\2/0\3/\40\5/0\6/\7
To dodaje zera do miesięcy i dni tak, że mają co najmniej dwa znaki.
Następny mecz zmienia format daty w formacie wymaganym w zapytaniu (brak komentarzy na temat niewykorzystywania pola daty) Jest to wymóg klienta dla bazy danych.
Dopasowane wyrażenie:
^{:w:b:w:b}[0-9]*{[0-9]^2}/[0-9]*{[0-9]^2}/{:z}{:b[0-9A-Za-z:b]+:b:w:b[A-Z]+:b:z:b:w:b}[0-9]*{[0-9]^2}/[0-9]*{[0-9]^2}/{:z}
I wymienić: \1\4\(2,2)\(2,3)\5\8\(2,6)\(2,7)
Wreszcie wstawia finał wyniki do SQL, która będzie przyzwyczaić w instrukcji insert.
Dopasowane wyrażenie:
^{:w}:b{:w}:b{:z}:b{[0-9A-Za-z:b]+}:b{:w}:b{[A-Z]+}:b{:z}:b{:w}:b{:z}
I wymienić: select '\1','\2','\3','\4','\5','\6','\7','\8','\9'
to wszystko działa z wyjątkiem ostatniej wymiany. Z jakiegoś powodu \ 9 NIE otrzymuje danych z meczu. Jeśli po prostu zastąpię całe wyrażenie zamieniające na \ 9, otrzymam puste miejsce. Jeśli użyję \ 8, otrzymam N. Jeśli wyeliminuję ósmy element z nawiasami, co spowoduje, że moja dziewiąta pozycja jest ósma, zwraca to, co chcę, 20120101.
Moje pytanie brzmi, czy SSMS/SQL pozwala na 9 oznaczonych tagami wyrażenia podczas korzystania z funkcji Znajdź/Zamień i Wyrażenia regularne? Czy może czegoś tutaj brakuje? Wiem, że są inne sposoby na zrobienie tego. Po prostu próbuję zrobić to szybko jako POC zanim przeniesiemy to do sproc lub aplikacji.
Dzięki za pomoc. -Peter
Możesz importować bezpośrednio z arkusza kalkulacyjnego. Czy dane są już w osobnych kolumnach? – RedFilter
Dlaczego należy użyć Zamień? Jeśli dane pochodzą z arkusza kalkulacyjnego i korzystasz z SSMS, dlaczego nie skorzystać z menedżera importu/eksportu? Co więcej, dlaczego formatować dane, czy arkusz kalkulacyjny nie obsługuje formatów daty mm/dd/yyyy? Czy nie możesz napisać formuły komórek, aby połączyć łańcuch, który wstawia dane dla ciebie? – Trisped
Edytuj pytanie, aby dodać odpowiednie formatowanie wyrażeń kodu. Możesz to zrobić przez: otaczanie tyłem ("' "), zaznaczanie wszystkich i klikanie przycisku paska narzędzi' {} 'lub przez zaznaczenie bloku kodu i naciśnięcie Ctrl + K. Możesz wyświetlić podgląd swojego postu (przed jego opublikowaniem) bezpośrednio pod przyciskiem "Prześlij pytanie" podczas wprowadzania go; aktualizacje podglądu w czasie rzeczywistym, więc jest to widok WYSIWYG. Właściwe formatowanie sprawia, że pytanie jest łatwiejsze do odczytania i zrozumienia, a zatem znacznie bardziej prawdopodobne jest uzyskanie odpowiedzi. Dzięki. :) –