Команда SQL не изменяет данные - PullRequest
1 голос
/ 06 августа 2009

Я использую команду SQL ниже, чтобы обновить столбец с именем Address, значение содержит перевод строки, и я хочу заменить их точкой с запятой. В Query Analayzer предварительный просмотр выглядит идеально, но когда я проверяю данные в Enterprise Manager (MS SQL 2000), я все еще вижу квадраты, то есть переводы строк. Я не совершаю изменения? Куда я иду не так? Спасибо

alt text

Ответы [ 5 ]

11 голосов
/ 06 августа 2009

Вам необходимо использовать оператор UPDATE !

Замена в SELECT просто изменяет вывод, а не данные в таблице.

BEGIN TRAN
UPDATE Customers SET Address = REPLACE(Address, char(10) + char(13), ' ') .... etc

--Check you like the change
SELECT * FROM Customers
--COMMIT --uncomment this to commit the changes.
2 голосов
/ 06 августа 2009

Это было бы:

UPDATE customers SET Address = REPLACE(REPLACE(REPLACE(Address,CHAR(10)+CHAR(13),' '),CHAR(10),';'),CHAR(13),';')
1 голос
/ 06 августа 2009

Когда вы выполняете замену внутри select, изменяются только данные «selected». Таким образом, замена выполняется непосредственно перед тем, как показывать вам данные. Данные таблицы не затрагиваются выбором. Данные в столбце необходимо обновить с помощью оператора update, например:

UPDATE customers SET
    Address = REPLACE(Address,CHAR(10)+CHAR(13), ' ')
1 голос
/ 06 августа 2009
UPDATE Customers
   SET Address = REPLACE(.....)
0 голосов
/ 06 августа 2009

проблема в том, что когда первая замена завершена в тексте char (10) и char (13) заменены на '', а следующая замена nerev ничего не делает

...