2011-01-31 15 views
15

Merhaba Nvarchar (1000) türü bir sütun var. Bu sütundaki karakterleri kodlamaktan ve özel karakterleriyle değiştirmem gerekiyor. Örnek için :Dizenin bir bölümünü tsql'deki değiştirme işlevini kullanarak nasıl güncellerim?

column value is : 'This text values contains this '&' this'. 

I '&' ile '&' değiştirmek zorunda.

  1. İlk (durumu gibi kullanıyor olabilir)
  2. sütunda '&' sahiptir kaydı bulmak zorunda Ve ben bunu nasıl yapacağım

sonra özel karakteri ile sadece bu kelimeyi değiştirmek? Pl. ...

cevap

30

Bu Sen yuva diğer değiştirmeler gerekecek

REPLACE(MyColumn, '&', '&') 

tüm sütunda yerini alacak Hep birlikte

REPLACE(REPLACE(MyColumn, '&', '&'), '>', '>') 

UPDATE myTable 
SET MyColumn = REPLACE(MyColumn, '&', '&') 
WHERE MyColumn LIKE '%&%' 
+0

@gbn: güncelleme ifadesiyle? – User13839404

+0

@Jango: üzgünüm, acele ve sadece dize yerine sorunu gördü – gbn

+1

@ gb: Teşekkürler ama SET sonra sütun adını söyleyerek işe yaramazsa düşünüyorum ya da olacak? – User13839404

1
Update TABLE 
Set field = replace(field, '&', '&'); 
8
UPDATE mytable 
    SET mycol = REPLACE(mycol, N'&', N'&') 
    WHERE mycol LIKE '%&%' 
yardım

EDIT Birden çok html varlığını bir seferde değiştirmeye karar verirseniz, değiştirmelerin sırası sonuçları değiştirebilir. Örneğin

: Eğer & ilk &amp; değiştirip < ile daha sonra &lt;, ancak öncelikle < ile &lt; ve & ile daha sonra &amp; değiştirmeye çalışırsanız sonuç &lt; olacaksa

&amp;lt; 

&< olur.

Bu tür bir değiştirme yapmak zorunda kalırsam, genellikle bu nedenle en son olarak &amp;'u değiştiririm. Tabii, sık sık olur, ama asla bilemezsiniz bir kenar durumda ve bir şey değil ...

+0

Aslında, birden çok değiştirmeyi yapıyorum. Haklısın. Teşekkürler. – User13839404

5

Jenerik sözdizimi:

UPDATE Table_Name 
SET Column_Name = REPLACE(Column_Name, 'Text_To_Be_Replaced', 'New_Text') 
WHERE Column_Name LIKE '%Text_To_Be_Replaced%' 
İlgili konular