Jawaban:
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
Sunting: Untuk menjelaskan, KANAN membutuhkan 2 argumen - string (atau kolom) untuk beroperasi, dan jumlah karakter untuk kembali (mulai dari sisi "kanan" dari string). LEN mengembalikan panjang data kolom, dan kami mengurangi empat sehingga fungsi KANAN kami meninggalkan 4 karakter paling kiri "di belakang".
Semoga ini masuk akal.
Sunting lagi - Saya baru saja membaca jawaban Andrew, dan dia mungkin telah melakukan interperperet dengan benar, dan saya mungkin salah. Jika ini masalahnya (dan Anda ingin memperbarui tabel daripada hanya mengembalikan hasil yang dipaksakan), Anda dapat melakukan ini:
UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
Dia berada di jalur yang benar, tetapi solusinya akan menjaga 4 karakter di awal string, daripada membuang kata 4 karakter.
COL_LENGTH('MyTable', 'MyColumn')bukan LEN(MyColumn)karena dalam kasus saya saya ingin mengecualikan n karakter pertama tidak peduli ukuran konten aktual dalam kolom, tetapi ini bekerja dengan baik selain itu!
Stuff(someColumn, 1, 4, '')
Ini mengatakan, dimulai dengan 1posisi karakter pertama , ganti 4karakter dengan apa-apa''
someColumnsesuatu yang kompleks seperti subselect dari CTE atau somehting, ini tidak perlu dievaluasi dua kali.
Mengapa menggunakan LEN sehingga Anda memiliki 2 fungsi string? Yang Anda butuhkan adalah karakter 5 di ...
...SUBSTRING (Code1, 5, 8000)...
Coba ini:
update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);
Berikut ini mock-up sederhana dari apa yang Anda coba lakukan :)
CREATE TABLE Codes
(
code1 varchar(10),
code2 varchar(10)
)
INSERT INTO Codes (CODE1, CODE2) vALUES ('ABCD1234','')
UPDATE Codes
SET code2 = SUBSTRING(Code1, 5, LEN(CODE1) -4)
Jadi, gunakan pernyataan terakhir terhadap bidang yang ingin Anda pangkas :)
Fungsi SUBSTRING memangkas Code1, mulai dari karakter FIFTH, dan melanjutkan untuk panjang CODE1 kurang 4 (jumlah karakter dilewati di awal).
Anda juga dapat melakukan ini dalam SQL ..
substring(StudentCode,4,len(StudentCode))
sintaksis
substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)
Jawaban teratas tidak cocok ketika nilai mungkin memiliki panjang kurang dari 4.
Anda akan mendapatkan "Parameter panjang tidak valid diteruskan ke fungsi yang benar" karena tidak menerima negatif. Gunakan pernyataan KASUS:
SELECT case when len(foo) >= 4 then RIGHT(foo, LEN(foo) - 4) else '' end AS myfoo from mytable;
Nilai kurang dari 4 memberikan perilaku mengejutkan di bawah bukannya kesalahan, karena meneruskan nilai negatif ke KANAN akan memangkas karakter pertama dan bukan seluruh string. Lebih masuk akal untuk digunakan RIGHT(MyColumn, -5)sebagai gantinya.
Contoh membandingkan apa yang Anda dapatkan ketika Anda menggunakan jawaban "panjang - 5" jawaban atas daripada "-5":
create temp table foo (foo) as values ('123456789'),('12345678'),('1234567'),('123456'),('12345'),('1234'),('123'),('12'),('1'), ('');
select foo, right(foo, length(foo) - 5), right(foo, -5) from foo;
foo len(foo) - 5 just -5
--------- ------------ -------
123456789 6789 6789
12345678 678 678
1234567 67 67
123456 6 6
12345
1234 234
123 3
12
1
Ada fungsi trim bawaan yang sempurna untuk tujuan tersebut.
SELECT trim(both 'ag' from 'asdfg');
btrim
-------
sdf
(1 riga)
http://www.postgresql.org/docs/8.1/static/functions-string.html
Akan baik untuk dibagikan, Untuk penggunaan DB2:
INSERT(someColumn, 1, 4, '')
Stuff tidak didukung dalam DB2