W SQL, jak mogę usunąć pierwsze 4 znaki wartości określonej kolumny w tabeli? Nazwa kolumny to, Student Code
a przykładowa wartość to ABCD123Stu1231
. Chcę usunąć pierwsze 4 znaki z mojej tabeli dla wszystkich rekordów
Proszę, prowadź mnie
źródło
W SQL, jak mogę usunąć pierwsze 4 znaki wartości określonej kolumny w tabeli? Nazwa kolumny to, Student Code
a przykładowa wartość to ABCD123Stu1231
. Chcę usunąć pierwsze 4 znaki z mojej tabeli dla wszystkich rekordów
Proszę, prowadź mnie
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
Edycja: Aby wyjaśnić, PRAWO przyjmuje 2 argumenty - ciąg (lub kolumnę), na którym ma działać, i liczbę znaków do zwrócenia (zaczynając od „prawej” strony ciągu). LEN zwraca długość danych kolumny, a my odejmujemy cztery, tak aby funkcja PRAWO pozostawiła cztery skrajne lewe znaki „za”.
Mam nadzieję, że to ma sens.
Edytuj ponownie - właśnie przeczytałem odpowiedź Andrew i mógł on zinterpretować poprawnie, i mogę się mylić. W takim przypadku (i chcesz ZAKTUALIZOWAĆ tabelę, a nie tylko zwracać spreparowane wyniki), możesz to zrobić:
UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
Jest na dobrej drodze, ale jego rozwiązanie zachowa 4 znaki na początku ciągu, zamiast odrzucać wspomniane 4 znaki.
COL_LENGTH('MyTable', 'MyColumn')
zamiast tegoLEN(MyColumn)
użyłem, ponieważ w moim przypadku chciałem wykluczyć pierwsze n znaków bez względu na rozmiar rzeczywistej zawartości w kolumnie, ale to działało dobrze poza tym!To mówi, zaczynając od pozycji pierwszego
1
znaku, zamień4
znaki na nic''
źródło
someColumn
jest to coś złożonego, jak podselekcja z CTE lub coś innego, nie wymaga to podwójnej oceny.Po co używać LEN, aby mieć 2 funkcje tekstowe? Potrzebujesz tylko postaci 5 na ...
źródło
Spróbuj tego:
źródło
Oto prosta makieta tego, co próbujesz zrobić :)
Więc użyj ostatniej instrukcji w polu, które chcesz przyciąć :)
Funkcja SUBSTRING przycina w dół Code1, zaczynając od piątego znaku i kontynuując przez długość CODE1 minus 4 (liczba znaków pomijanych na początku).
źródło
Kompletna rzecz
źródło
Możesz to również zrobić w SQL ..
składnia
źródło
Spróbuj tego. 100% sprawne
źródło
Górna odpowiedź nie jest odpowiednia, gdy wartości mogą mieć długość mniejszą niż 4.
W T-SQL
Otrzymasz komunikat „Nieprawidłowy parametr długości przekazany do właściwej funkcji”, ponieważ nie akceptuje ona wartości ujemnych. Użyj instrukcji CASE:
W Postgres
Wartości mniejsze niż 4 dają zaskakujące zachowanie poniżej zamiast błędu, ponieważ przekazanie wartości ujemnych do PRAWEGO pola przycina pierwsze znaki zamiast całego ciągu.
RIGHT(MyColumn, -5)
Zamiast tego lepiej jest użyć .Przykład porównujący to, co otrzymujesz, stosując górną odpowiedź „długość - 5” zamiast „-5”:
źródło
Jest wbudowana funkcja przycinania, która jest idealna do tego celu.
http://www.postgresql.org/docs/8.1/static/functions-string.html
źródło
Byłoby dobrze udostępnić, Do użytku z DB2:
INSERT(someColumn, 1, 4, '')
Stuff
nie jest obsługiwany w DB2źródło
Jeśli musisz usunąć kilka pierwszych znaków, które są poprzedzone znakiem specjalnym
#
, takim jak , to jest dobry:źródło