2015-10-21 3 views
0

Я работаю над SQL Server 2008. Предположим, что следующий столбец.Оператор обновления для обновления части длины столбца

column1 

cjd.001 306.1 
cjd.001 306.2 
cjd.001 306.R  

Теперь я хочу заменить все '.' с '-'. Но только с первой строки, то есть перед пробелом или ниже 8 символов. Остальное поле должно оставаться таким же.

SampleOutput 

cjd-001 306.1 
cjd-001 306.2 
cjd-001 306.R 

Я попытался выполнить запрос, но он заменяет все «.».

UPDATE dbo.table 
SET column1 = REPLACE(column1, '.', '-') 

Я хочу знать, что я могу использовать в where clause? Пробовал использовать функцию подстроки, но это не сработало.

+1

Очевидно, что вы должны разделить вашу строку на две части и изменить только первую часть. Поэтому начните с попытки найти позицию, где нужно разбить строку. Затем используйте SUBSTRING соответственно, затем ЗАМЕНИТЕ, а затем снова соедините две части. –

+0

Всегда ли это один символ на четвертой позиции, который вы в конечном итоге замените? Как в вашем примере данные? –

+0

Может ли место находиться в положении 1, и если да, то оно предотвратит замену вообще или оно будет проигнорировано или даже удалено? –

ответ

2

Я думаю, что вам нужен SQL, как это:

UPDATE yourTable 
SET column1 = REPLACE(SUBSTRING(column1, 1, CHARINDEX(' ', column1)), '.', '-') 
      + SUBSTRING(column1, CHARINDEX(' ', column1) + 1, LEN(column1)); 

[SQL Fiddle Demo]

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