Saya sedang mengerjakan kueri SQL yang membaca dari database SQLServer untuk menghasilkan file ekstrak. Salah satu syarat untuk menghilangkan angka nol terdepan dari bidang tertentu, yaitu VARCHAR(10)
bidang sederhana . Jadi, misalnya, jika bidang berisi '00001A', pernyataan SELECT perlu mengembalikan data sebagai '1A'.
Apakah ada cara dalam SQL untuk dengan mudah menghapus angka nol di depan dengan cara ini? Saya tahu ada RTRIM
fungsi, tapi ini sepertinya hanya untuk menghilangkan spasi.
sql
sql-server
tsql
Tim C
sumber
sumber
Jawaban:
sumber
sumber
pengembalian
N0Z
, yaitu, akan menyingkirkan nol di depan dan apa pun yang muncul sebelum mereka.sumber
Saya memiliki kebutuhan yang sama dan menggunakan ini:
sumber
Jika Anda ingin kueri mengembalikan 0 alih-alih string nol atau nilai lain dalam hal ini, Anda dapat mengubahnya menjadi pernyataan kasus seperti ini:
sumber
Anda dapat menggunakan ini:
sumber
Anda dapat mencoba ini - perlu perhatian khusus untuk hanya menghapus angka nol di depan jika diperlukan:
Atau Anda bisa menelepon
sumber
Berikut adalah fungsi nilai skalar SQL yang menghapus nol di depan dari string:
sumber
Jika Anda ingin menghapus angka nol di depan dari string dengan ukuran yang tidak diketahui.
Anda dapat mempertimbangkan untuk menggunakan perintah STUFF.
Berikut adalah contoh cara kerjanya.
Lihat di fiddler berbagai skenario yang akan dibahasnya
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
sumber
Untuk menghapus 0 di depan dari pernyataan bulan berikutnya pasti akan berhasil.
Ganti saja
GETDATE()
dengan bidang tanggal di Tabel Anda.sumber
kamu bisa mencoba ini
SELECT REPLACE(columnname,'0','') FROM table
sumber
Untuk menghilangkan awalan 0, Anda dapat mengalikan kolom angka dengan 1 Misal: Select (ColumnName * 1)
sumber
Ini adalah skrip Sql yang mengemulasi fungsionalitas perintah TRIM di tsql sebelum 2017, pada dasarnya sama dengan rekomendasi lainnya, tetapi yang lain mengganti dengan satu karakter tidak umum yang masih dapat terjadi, '[Rtrim]' atau '[ Ltrim] 'masih bisa muncul dalam teks, tetapi mengganti topi dengan teks unik, misalnya Panduan akan menyelesaikan masalah itu.
saya belum mengujinya tentang kecepatan
sumber
Saya meminjam dari ide-ide di atas. Ini tidak cepat atau elegan. tapi itu akurat.
KASUS
AKHIR
sumber
sumber
Ini harus dilakukan.
sumber
select trim(leading '0' from '001A');
, tetapi OP meminta SQL Server.