Jak usunąć ostatni znak w ciągu T-SQL
?
Na przykład:
'TEST STRING'
wracać:
'TEST STRIN'
sql
sql-server
tsql
Daveed
źródło
źródło
Jeśli z jakiegoś powodu logika Twojej kolumny jest złożona (przypadek kiedy ... then ... else ... end), powyższe rozwiązania powodują, że musisz powtórzyć tę samą logikę w funkcji len (). Powielanie tej samej logiki staje się bałaganem. Jeśli tak jest, to warto zwrócić uwagę na to rozwiązanie. Ten przykład usuwa ostatni niechciany przecinek. W końcu znalazłem zastosowanie funkcji REVERSE.
źródło
NULL
jeśli przekazano ciąg, który jest krótszy niż zakres usuwania określony dlaSTUFF
. Zawiń go w an,ISNULL
aby uzyskać inną wartość wyjściową dla pustej wielkości łańcucha.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Spróbuj tego:
źródło
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Teraz oba zapytania zwracają to samo, ponieważ numeracja jest oparta na 1, co oznacza, że pierwszy znak w wyrażeniu to 1. Jeśli początek jest mniejszy niż 1, zwrócone wyrażenie rozpocznie się od pierwszego znaku określonego w wyrażeniu. ŹródłoJeśli twój ciąg jest pusty,
wtedy ten kod spowoduje komunikat o błędzie „Nieprawidłowy parametr długości przekazany do funkcji podciągu”.
Możesz sobie z tym poradzić w ten sposób:
Zawsze zwróci wynik i NULL w przypadku pustego ciągu.
źródło
źródło
To zadziała nawet wtedy, gdy tekst źródłowy / var ma wartość null lub jest pusty:
źródło
Jeśli twój coloumn jest
text
i nievarchar
, możesz użyć tego:źródło
Jeśli chcesz to zrobić w dwóch krokach, zamiast trzech z ODWRÓĆ-STUFF-ODWRÓĆ, możesz ustawić separator listy w postaci jednej lub dwóch spacji. Następnie użyj RTRIM, aby przyciąć końcowe spacje i REPLACE, aby zamienić podwójne spacje na ','
Jednak nie jest to dobry pomysł, jeśli oryginalny ciąg może zawierać spacje wewnętrzne.
Nie jestem pewien co do wydajności. Każde REVERSE tworzy nową kopię ciągu, ale STUFF jest o jedną trzecią szybsze niż REPLACE.
zobacz też to
źródło
źródło
Mogę to zasugerować -hack-;).
SQL Server Fiddle Demo
źródło
możesz stworzyć funkcję
źródło
Spróbuj tego
źródło
Zdobądź ostatnią postać
źródło
Moja odpowiedź jest podobna do zaakceptowanej odpowiedzi, ale sprawdza również wartość Null i Empty String.
źródło
To dość późno, ale co ciekawe, jeszcze nigdy nie wspomniano.
to znaczy:
źródło
Uwielbiam odpowiedź @ bill-hoenig; jednak korzystałem z podzapytania i zostałem złapany, ponieważ funkcja REVERSE potrzebowała dwóch zestawów nawiasów. Zajęło mi trochę czasu, zanim to rozgryzłem!
źródło
Aby zaktualizować rekord przez obcięcie ostatnich N znaków z określonej kolumny:
źródło
Spróbuj :
źródło
wynik:
źródło
Spróbuj tego,
A wynik będzie podobny do THAMIZHMANI
źródło
źródło