Pracuję nad zapytaniem SQL, które odczytuje z bazy danych SQLServer, aby utworzyć plik wyodrębnienia. Jedno z wymagań dotyczących usunięcia wiodących zer z określonego pola, które jest VARCHAR(10)
polem prostym . Na przykład, jeśli pole zawiera „00001A”, instrukcja SELECT musi zwrócić dane jako „1A”.
Czy w SQL jest sposób, aby w ten sposób łatwo usunąć wiodące zera? Wiem, że jest RTRIM
funkcja, ale wydaje się, że usuwa tylko spacje.
sql
sql-server
tsql
Tim C.
źródło
źródło
Odpowiedzi:
źródło
źródło
zwraca
N0Z
, to znaczy pozbywa się wiodących zer i wszystkiego, co jest przed nimi.źródło
Miałem taką samą potrzebę i użyłem tego:
źródło
Jeśli chcesz, aby zapytanie zwróciło 0 zamiast ciągu zer lub dowolnej innej wartości w tym zakresie, możesz przekształcić to w instrukcję case, taką jak ta:
źródło
Możesz użyć tego:
źródło
Możesz tego spróbować - w razie potrzeby należy usunąć tylko zera wiodące:
Możesz też po prostu zadzwonić
źródło
Oto funkcja wartości skalarnej SQL, która usuwa zera wiodące z łańcucha:
źródło
Na wypadek, gdybyś chciał usunąć wiodące zera z łańcucha o nieznanym rozmiarze.
Możesz rozważyć użycie polecenia STUFF.
Oto przykład, jak by to działało.
Zobacz w skrzypcach różne scenariusze, które będzie obejmować
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
źródło
Usunięcie początkowego 0 z miesiąca następującego na pewno zadziała.
Po prostu zastąp
GETDATE()
polem daty swojej tabeli.źródło
możesz tego spróbować
SELECT REPLACE(columnname,'0','') FROM table
źródło
Aby usunąć początkowe 0, możesz pomnożyć kolumnę liczbową przez 1 Np .: Wybierz (ColumnName * 1)
źródło
To jest skrypt Sql, który emuluje funkcjonalność polecenia TRIM w tsql sprzed 2017 roku, jest w zasadzie taki sam jak inne zalecenia, ale inne zastępują pojedynczym nietypowym znakiem, który nadal może wystąpić, „[Rtrim]” lub „[ Ltrim] 'może nadal występować w tekście, ale zastąpienie kapelusza unikalnym tekstem, na przykład Guid, rozwiązałoby ten problem.
nie testowałem tego pod kątem szybkości
źródło
Zapożyczyłem z powyższych pomysłów. To nie jest ani szybkie, ani eleganckie. ale to jest dokładne.
WALIZKA
KONIEC
źródło
źródło
To powinno wystarczyć.
źródło
select trim(leading '0' from '001A');
, ale OP pytał o SQL Server.