Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

cześć
w procedurze:

mam w tabeli kolumne typu ntext
chce dokonać na zawartości kolumny operacji podmiany
Jak w smartach zamienić
REPLACE('{NAZWISKO}','Kowalski',@tekst)

- Na kolumnie nie zrobię - bo replace nie działa na kolumnie
trzeba wywalić tekst do zmiennej

- Na zmiennej też nie zrobię, bo w procedurze nie wolno zdefiniować zmiennej typu ntext

M$SQL rzuca kłody pod nogi na każdym kroku

ktoś ma jakiś pomysł ?
Jacek Ołowiak

Jacek Ołowiak kierownik zespołu IT

Temat: mssql - replace na ntext ??? help

"chce dokonać na zawartości kolumny operacji podmiany
Jak w smartach zamienić "
możesz wytłumaczyć dokładniej? bo albo zabrakło przecinków albo ja nie rozumiem
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: mssql - replace na ntext ??? help

Nie dziala na kolumnie? Jak czyscilem baze MS SQL 2000 po migracji danych to dzialal..

[EDIT] wlasnie sprawdzilem:

update time
set projectcode = replace(projectcode, 'SAL', 'SLS')

(48605 row(s) affected)

Zdecydowanie dziala.

I jeszcze taka ciekawoestka znaleziona w sieci:

"This solved the problem for me…

select replace(fld, N’ ‘, N’ ‘)
from table

This would help when fld is an nvarchar instead of varchar."

Nie wiedzialem, ze tak tez mozna :>Bartosz Ślepowroński edytował(a) ten post dnia 04.03.08 o godzinie 13:11
Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

Bartosz Ślepowroński:
Nie dziala na kolumnie?
set projectcode = replace(projectcode, 'SAL', 'SLS')
Zdecydowanie dziala.

na ntext nie działa :(

update @szablon set szablon = replace(szablon, '{NAZWISKO}','Kowalski')

"Argument data type ntext is invalid for argument 1 of replace function."Maciej Filipiak edytował(a) ten post dnia 04.03.08 o godzinie 15:07
Jacek Ołowiak

Jacek Ołowiak kierownik zespołu IT

Temat: mssql - replace na ntext ??? help

a spróbuj z tym N - zmieni ci na unicode i moze problem zniknie no bo ntext to przeca tez unicode
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: mssql - replace na ntext ??? help

Maciej Filipiak:
na ntext nie działa :(

update @szablon set szablon = replace(szablon, '{NAZWISKO}','Kowalski')

"Argument data type ntext is invalid for argument 1 of replace function."Maciej Filipiak edytował(a) ten post dnia 04.03.08 o godzinie 15:07

Moze cast sprobuj?
http://msdn2.microsoft.com/en-us/library/ms187928.aspx

update @szablon set szablon = replace((cast(szablon as varchar),N'{NAZWISKO}',N'Kowalski')

Ale nie testowalem :>
Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

przetestuje jutro w robocie,
ale moim zdaniem powinno uciąć tekst do 4 tyś. znaków.

Próbowałem zrzucić kolumnę do zmiennej - da się.

Tyle ze zmiennej ntext nie można deklarować w procedurach.

(jak nie urok to bill gates)Maciej Filipiak edytował(a) ten post dnia 04.03.08 o godzinie 19:09
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: mssql - replace na ntext ??? help

Hm. Jak zerkniesz pod podany link to znajdziesz tabelke z rozpisana 'kompatybilnoscia' poszczegolnych typow danych. Zamiast ntext mozesz wiec uzyc char, varchar, nchar, i nvarchar.

Mozesz tez stworzyc wewnatrz procedury tabele z obslugiwanym typem danych, zrzucic do niej wszystko co trzeba, replace, i update na tabelim docelowej. Troche to prymitywne, ale jesli to ma byc rozwiazanie ad hoc to nie musi byc ladne, tylko skuteczne, prawda? :>Bartosz Ślepowroński edytował(a) ten post dnia 04.03.08 o godzinie 20:31

konto usunięte

Temat: mssql - replace na ntext ??? help

jesli ten text nie ma więcej niż 8tys znaków to może tak

REPLACE('{NAZWISKO}','Kowalski',convert (varchar (8000),@tekst))
Maciej Filipiak:
przetestuje jutro w robocie,
ale moim zdaniem powinno uciąć tekst do 4 tyś. znaków.

Próbowałem zrzucić kolumnę do zmiennej - da się.

Tyle ze zmiennej ntext nie można deklarować w procedurach.

(jak nie urok to bill gates)Maciej Filipiak edytował(a) ten post dnia 04.03.08 o godzinie 19:09

konto usunięte

Temat: mssql - replace na ntext ??? help

Robert Kubalski:
jesli ten text nie ma więcej niż 8tys znaków to może tak

REPLACE('{NAZWISKO}','Kowalski',convert (varchar (8000),@tekst))
Maciej Filipiak:
przetestuje jutro w robocie,
ale moim zdaniem powinno uciąć tekst do 4 tyś. znaków.

Próbowałem zrzucić kolumnę do zmiennej - da się.

Tyle ze zmiennej ntext nie można deklarować w procedurach.

(jak nie urok to bill gates)Maciej Filipiak edytował(a) ten post dnia 04.03.08 o godzinie 19:09
A nie jest przypadkiem tak, że MS ma ograniczenie od 8000 bajtów, co w przypadku Unicode, który jest multi-byte daje 4000 znaków ? ;)
Jacek Ołowiak

Jacek Ołowiak kierownik zespołu IT

Temat: mssql - replace na ntext ??? help

no normalnie masz polowe mniej miejsca.
jesli masz unicode to zajmuje on 8 tys znakow ale ty mozesz wstawic tylko 4 tys.
Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

Panowie, gdyby można bylo nvarchar ....
ale to musi być ntext do 2G chyba się mieści
gdyby to było do 4k to bym pytania nie zadawał.

Póki co dodałem moduł w C#, który załatwia sprawę - ale to nie jest eleganckie wyjście z sytuacji.

konto usunięte

Temat: mssql - replace na ntext ??? help

Maciej Filipiak:
Panowie, gdyby można bylo nvarchar ....
ale to musi być ntext do 2G chyba się mieści
gdyby to było do 4k to bym pytania nie zadawał.

Póki co dodałem moduł w C#, który załatwia sprawę - ale to nie jest eleganckie wyjście z sytuacji.

http://sqlserver2000.databases.aspfaq.com/how-do-i-han...
Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

Dzięki Robert - przywróciłeś mi sens życia
Jakub Stolpe

Jakub Stolpe .NET Developer

Temat: mssql - replace na ntext ??? help

jesli mowimy o sql 2005, to convert na nvarchar(max) powinien pomoc :)

update tab1
set col1 = replace(convert(nvarchar(max),col1), '1', '0')

col1 jest typu ntext, testowalem na polu, ktore zawieralo ponad 10tys. znakow i dziala :)
Maciej Filipiak

Maciej Filipiak właściciel, VizMedia

Temat: mssql - replace na ntext ??? help

niestety 2000 ale dobrze wiedzieć, będzie argument do dyskusji z prezesami
Jakub Stolpe

Jakub Stolpe .NET Developer

Temat: mssql - replace na ntext ??? help

teraz to od razu przesiadka na 2008 ;D

Następna dyskusja:

I need help!!




Wyślij zaproszenie do