2014-11-26 21 views
5

Test veritabanında, değere öntanımlı dolar işaretleri bulunan birkaç satır var. Ben name sütundaki verilerin altı satır boşaltılmış birlikte aşağıdaki sorguyu attığında ben ... Ancak test1 tablonun name satırdaki değerleri UPDATE istiyorum PostgreSQL UPDATE substring değiştirme

UPDATE test1 SET name=overlay('$' placing '' from 1 for 1); 

Yani "$ user" "oldu "Bu sütun/satır değerinin" kullanıcı "haline gelmesini istediğimde.

UPDATE ve bir alt klasörün yerini başka bir veriyi silmeden nasıl bir araya getirebilirim?

Dolar işareti yoksa, satırın el değmeden kalmasını istiyorum.

Dolar işareti yalnızca gerçekleştiğinde ilk karakter olarak ortaya çıkar. yalnızca bu satırları değiştirmek için sadece substr() kullanabilirsiniz değer ve bir where maddesi başında $ değiştirmek istiyorsanız

update test1 
    set name = replace(name, '$', ''); 

: Tüm dolar işaretleri değiştirmek istiyorsanız

+1

'adıyla başladığı = (isim, '$', '') yerine' –

+0

@a_horse_with_no_name, teşekkür ederim onlar olur. Maalesef maalesef yeterli bir itibara sahip olmamakla birlikte, dolar işareti yalnızca ilk karakter ise bunu nasıl yapacağımı merak ediyorum. Bunu denedim ve pozisyondan bağımsız olarak dolar işaretleri değiştirdi. GÜNCELLEME testini yaptım1 SET ismi = değiştir (isim, '$', '', 1'den 1'e kadar); '' başarı olmadan; Eğer cevabını bir cevap olarak gönderirsen kabul etmekten mutluluk duyarım. –

cevap

12

, bunu kullan sütunu gerçekte $

update test1 
    set name = substr(name, 2) 
where name like '$%'; 
+0

Bu ilginçti, 'substr' kullanmayı düşünmemiştim, sanırım 'replace' ile' FROM'ı birleştirmek mümkün değil mi? –

+0

@ user312854: Hiçbir fikir. 'Replace()' işlevinin bu formuna hiç alışmam. Daha karmaşık olan görevler için genellikle 'regexp_replace() ' –

+0

'u kullanıyorum Herhangi bir örneği düşünemiyorum, en azından elimden geleni, hayal ettiğim gibi ilk ve son karakterler arasında belirli bir noktadaki karakteri sürekli olarak değiştirmem gerek 'replace' ve 'FROM 'düzenli bir ifadeyi kullanmaktan daha verimli olurdu? Sunucu yükünü azaltmam gerekmedikçe, regex'te oldukça iyiyim. –