2009-08-06 1 views
1

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

alt text http://i29.tinypic.com/2ih9pbd.png

+0

Это сообщение проясняет ваш текущий вопрос, но, возможно, вы также можете прочитать начинающую книгу на SQL. Не было намека на преступление, я просто обнаружил, что намного легче изучать основы, читая книгу, вместо того, чтобы забивать кусочки знаний из Интернета. –

ответ

11

Вы должны использовать 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. 
+1

Когда все в порядке, вы раскомментируете часть --COMMIT и запустите ее снова. Кроме того, хороший ответ, просто небольшое разъяснение. В противном случае мы получим новый вопрос в stackoverflow. – Gertjan

-1

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

+1

Неправда, части, где CHAR (10) и CHAR (13) используются ** вместе ** заменяются пробелом, когда CHAR (10) стоит «в одиночку», он станет a. Проверьте результаты на панели результатов. – Gertjan

1

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

UPDATE customers SET 
    Address = REPLACE(Address,CHAR(10)+CHAR(13), ' ') 
+1

Если бы только поля имели такие методы, как Replace – pjp

+0

:) Хорошая точка. Я отредактирую свой комментарий. – Gertjan

2

Это было бы:

UPDATE customers SET Address = REPLACE(REPLACE(REPLACE(Address,CHAR(10)+CHAR(13),' '),CHAR(10),';'),CHAR(13),';') 

 Смежные вопросы

  • Нет связанных вопросов^_^