Bagaimana cara menghapus karakter terakhir dalam string T-SQL
?
Sebagai contoh:
'TEST STRING'
mengembalikan:
'TEST STRIN'
sql
sql-server
tsql
Daveed
sumber
sumber
Jika karena alasan tertentu logika kolom Anda kompleks (kasus ketika ... lalu ... lain ... akhir), maka solusi di atas menyebabkan Anda harus mengulangi logika yang sama dalam fungsi len (). Menggandakan logika yang sama menjadi berantakan. Jika ini masalahnya maka ini adalah solusi yang perlu diperhatikan. Contoh ini menghilangkan koma yang tidak diinginkan terakhir. Saya akhirnya menemukan penggunaan untuk fungsi REVERSE.
sumber
NULL
jika melewati string yang lebih pendek dari rentang penghapusan yang ditentukan untukSTUFF
. Bungkus dalamISNULL
untuk mendapatkan nilai output yang berbeda untuk case string kosong.select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
Coba ini:
sumber
select substring('test string', 0, len('test string'))
?SUBSTRING ( expression ,start , length )
. Sekarang, kedua kueri mengembalikan sama karena penomoran adalah berdasarkan 1, yang berarti bahwa karakter pertama dalam ekspresi adalah 1. Jika mulai kurang dari 1, ekspresi yang dikembalikan akan dimulai pada karakter pertama yang ditentukan dalam ekspresi. SumberJika string Anda kosong,
maka kode ini akan menyebabkan pesan kesalahan 'Parameter panjang tidak valid diteruskan ke fungsi substring.'
Anda bisa mengatasinya dengan cara ini:
Itu akan selalu mengembalikan hasil, dan NULL dalam kasus string kosong.
sumber
sumber
Ini akan berfungsi bahkan ketika teks sumber / var adalah nol atau kosong:
sumber
Jika kolom Anda adalah
text
dan tidakvarchar
, maka Anda dapat menggunakan ini:sumber
Jika Anda ingin melakukan ini dalam dua langkah, daripada tiga dari REVERSE-STUFF-REVERSE, Anda dapat membuat pemisah daftar Anda menjadi satu atau dua spasi. Kemudian gunakan RTRIM untuk memotong spasi tambahan, dan REPLACE untuk mengganti spasi ganda dengan ','
Namun, ini bukan ide yang baik jika string asli Anda dapat berisi spasi internal.
Tidak yakin dengan kinerja. Setiap REVERSE membuat salinan baru dari string, tetapi STUFF adalah yang ketiga lebih cepat dari REPLACE.
juga lihat ini
sumber
sumber
Saya dapat menyarankan ini -hack-;).
Demo Server SQL Fiddle
sumber
Anda dapat membuat fungsi
sumber
Coba ini
sumber
Dapatkan karakter terakhir
sumber
Jawaban saya mirip dengan jawaban yang diterima, tetapi juga memeriksa Null dan String Kosong.
sumber
Ini agak terlambat, tetapi yang menarik belum pernah disebutkan.
yaitu:
sumber
Saya suka jawaban @ bill-hoenig; Namun, saya menggunakan subquery dan saya terjebak karena fungsi REVERSE membutuhkan dua set tanda kurung. Butuh waktu beberapa saat untuk memikirkannya!
sumber
Untuk memperbarui catatan dengan memotong N karakter terakhir dari kolom tertentu:
sumber
Cobalah :
sumber
keluaran:
sumber
Coba ini,
Dan hasilnya akan seperti, THAMIZHMANI
sumber
sumber