2016-01-29 6 views
1

У меня есть имя столбца source, которое имеет такие значения, как JBInfotech_CLC_4120_20160128.SQL Server update query заменить последний символ значения

Как обновить последний символ до 7. Есть сотни записей, которые я хочу обновить одновременно. Что это за записи:

SELECT * FROM [JBINFOTECH].[dbo].[leads] WHERE id <= 985 ORDER BY id DESC; 

Это постоянное обновление записи не выбрано.

+0

Всегда такой же длины? – jarlh

+0

Нет. это разные длины, но те же самые последние символы. – jackhammer013

+0

Вот почему вы всегда должны хранить отдельные фрагменты данных в своей колонке. Если приложение требует, чтобы вы показывали их вместе, сделайте это, показывая их вместе. Однако вам не нужно хранить их в одном столбце только потому, что вы показываете их вместе. –

ответ

2

Вы можете попробовать, как это,

DECLARE @table TABLE 
    (
    col1 VARCHAR(100) 
) 

INSERT INTO @table 
VALUES  ('ABCDEF123'), 
      ('JBInfotech_CLC_4120_20160128') 

SELECT * 
FROM @table 

UPDATE @table 
SET col1 = Stuff(col1, Len(col1), 1, '7') 

SELECT * 
FROM @table 
+0

Спасибо. Работает отлично. Я просто делаю UPDATE [JBINFOTECH]. [Dbo]. [Приводит] SET source = Stuff (источник, Len (источник), 1, '7') WHERE id <= 985; – jackhammer013

+0

Добро пожаловать. Пожалуйста, выберите мой ответ, если он вам подходит. – StackUser

+0

Да, после таймера :) – jackhammer013

2

Try:

update [JBINFOTECH].[dbo].[leads] 
Set [Source]=Concat(Left([Source],len([Source])-1), '7') 
WHERE id <= 985 
-1

UPDATE leads SET source = CONCAT (подстрока (источник, CHAR_LENGTH (источник) - 1), '7') WHERE id < = 985

+0

Эти двойные кавычки не будут делать то, что вы думаете. И все равно, это уже ответили за час до этого. –