2013-11-11 2 views
1

Я хочу обновить поле таблицы базы данных, используя другое поле в той же таблице. В настоящее время эта таблица называется источниками.SQL удаляет пробелы между определенным символом в строке?

Name Code 

В столбце имя я значения, как этот пример:

  1. 'Сделки на колесах'
  2. 'Homesru - Абу-Даби - Madinat Zayed Gold Центр'

И У меня есть последнее обновление:

UPDATE Sources 
SET Code = REPLACE((LTRIM(RTRIM(Name))),' ','-') 

результат:

Deals-On-Wheels-Al-Aweer 

который хорошо.

но для второго у меня есть это:

Homesru---Abu-Dhabi---Madinat-Zayed-Gold-Centre 

Я хочу, чтобы это было так:

Homesru-Abu-Dhabi-Madinat-Zayed-Gold-Centre 

Как я могу добиться этого? Любая помощь приветствуется.

+0

У вас есть такая строка: 'Homesru ------ Abu-Dhabi ------- Madinat ------- Zayed -------- Gold --- -Centre'? Тем не менее, избегайте такого рода манипуляций с использованием tSQL. tSQL был предназначен для восстановления информации из базы данных, а не для ее форматирования. В самом деле, вы можете это сделать, но лучше избегайте этого, сохраните ваши чаты процессора сервера базы данных для получения и ввода информации. – Yaroslav

+0

@ Yaroslav На самом деле у меня могут быть такие данные, потому что они поступают с пользовательского ввода. Но если у него есть что-то подобное, то это его выбор. Спасибо за ваше объяснение. – user123456

+0

И почему вы не очищаете данные, прежде чем отправлять их в sql? Это будет проще и быстрее.И вам не нужно делать чистку строк/форматирование на tsql. Только совет, на ваш вопрос был дан ответ, так что вы закончили. Но в следующий раз, когда у вас будет аналогичная ситуация, у вас будет еще один возможный вариант. – Yaroslav

ответ

1

попробовать

REPLACE((LTRIM(RTRIM(REPLACE((LTRIM(RTRIM(Name))),' - ','-')))),' ','-') 

это будет первым заменить ' - ' только с '-'

+0

А что, если у него есть 'Homesru ------ Абу-Даби ------- Madinat ------- Zayed -------- Gold ---- Centre' – Yaroslav

+0

Thank вы за свой ответ. это работает. – user123456

+0

, то его данные неверны для начала, но в вашем конкретном примере абсолютно ничего не произойдет, поскольку у него нет пробелов. Если вы имеете в виду, что, если у него есть «DoubleSpace-DoubleSpace», тогда он может добавить уровень «DoubleSpace» в «», если он хочет ... (форматирование разделяет двойные пробелы) –

3

Как предложено @DanielE. мой ответ будет указывать на более глобальное решение, если вам когда-либо понадобится заменить дублирующиеся/трехчастные/квадратичные/... вхождения символа в строку.

Я не буду создавать полное решение этой проблемы, это повторяющийся вопрос, и уже есть хорошие решения. Проверьте эти ссылки:

SQL Server Central: remove spaces between specific character in a string?. Этот пост форума будет указывать на следующую ссылку, которую я публикую здесь. Но хорошо знать, что они задают и отвечают.

Replace multiple spaces with new one, но вы можете немного изменить его, чтобы заменить любой символ, который вы хотите.

Вы также можете положиться на этот ответ Find and remove repeated strings от Aaron Bertrand.

+0

Спасибо, что эти ссылки были настолько полезными. – user123456

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